Всем добрый день. Я новичок. Начал изучть VBA, т.к Экселя иногда не хватат. Знаю, что в уже есть готовые решения на данную тему. Но хочется сделать самому. Суть в том, что в некоторой таблице нужно удалить столбцы с пустым заголовком. Не получается закрыть цикл.
[vba]
Код
Sub Óäàë()
Dim rngAll As Range, rngRow As Range, rngCol As Range Dim rngCell As Range, rng1 As Range, NewRngRow As Range Dim lngX As Long
Do Set rngAll = ActiveSheet.UsedRange Set rngRow = rngAll.Rows(1)
rngRow.Cells.Find("").Activate Set rngCell = ActiveCell Set rng1 = rngRow.Cells(, 1)
Set NewRngRow = Range(rng1.Address, rngCell.Address) lngX = NewRngRow.Cells.Count
Set rngCol = rngAll.Columns(lngX) rngCol.Delete
Loop Until
End Sub
[/vba] [moder]Оформите код тегами (кнопка #)[/moder]
Всем добрый день. Я новичок. Начал изучть VBA, т.к Экселя иногда не хватат. Знаю, что в уже есть готовые решения на данную тему. Но хочется сделать самому. Суть в том, что в некоторой таблице нужно удалить столбцы с пустым заголовком. Не получается закрыть цикл.
[vba]
Код
Sub Óäàë()
Dim rngAll As Range, rngRow As Range, rngCol As Range Dim rngCell As Range, rng1 As Range, NewRngRow As Range Dim lngX As Long
Do Set rngAll = ActiveSheet.UsedRange Set rngRow = rngAll.Rows(1)
rngRow.Cells.Find("").Activate Set rngCell = ActiveCell Set rng1 = rngRow.Cells(, 1)
Set NewRngRow = Range(rng1.Address, rngCell.Address) lngX = NewRngRow.Cells.Count
Set rngCol = rngAll.Columns(lngX) rngCol.Delete
Loop Until
End Sub
[/vba] [moder]Оформите код тегами (кнопка #)[/moder]dmm
dmm, привет если для учебных целей, то добавьте еще одну строку (со звездочками) [vba]
Код
Sub Oaae() Dim rngAll As Range, rngRow As Range, rngCol As Range Dim rngCell As Range, rng1 As Range, NewRngRow As Range Dim lngX As Long
Do Set rngAll = ActiveSheet.UsedRange Set rngRow = rngAll.Rows(1)
Set rngCell = rngRow.Cells.Find("") If rngCell Is Nothing Then Exit Do '****
Set rng1 = rngRow.Cells(, 1)
Set NewRngRow = Range(rng1.Address, rngCell.Address) lngX = NewRngRow.Cells.Count
Set rngCol = rngAll.Columns(lngX) rngCol.Delete Loop End Sub
[/vba] а чтобы форум у нас выглядел красиво, зайдите в режим редактирования вашего сообщения, выделите строки с кодом и нажмите кнопочку # (в верхней строке) [offtop] С ветеранским приветом :)[/offtop]
dmm, привет если для учебных целей, то добавьте еще одну строку (со звездочками) [vba]
Код
Sub Oaae() Dim rngAll As Range, rngRow As Range, rngCol As Range Dim rngCell As Range, rng1 As Range, NewRngRow As Range Dim lngX As Long
Do Set rngAll = ActiveSheet.UsedRange Set rngRow = rngAll.Rows(1)
Set rngCell = rngRow.Cells.Find("") If rngCell Is Nothing Then Exit Do '****
Set rng1 = rngRow.Cells(, 1)
Set NewRngRow = Range(rng1.Address, rngCell.Address) lngX = NewRngRow.Cells.Count
Set rngCol = rngAll.Columns(lngX) rngCol.Delete Loop End Sub
[/vba] а чтобы форум у нас выглядел красиво, зайдите в режим редактирования вашего сообщения, выделите строки с кодом и нажмите кнопочку # (в верхней строке) [offtop] С ветеранским приветом :)[/offtop]nilem
Яндекс.Деньги 4100159601573
Сообщение отредактировал nilem - Четверг, 02.04.2015, 14:28
Sub DelCol() Dim i As Integer Dim iLCol As Integer iLCol = Cells(2, Columns.Count).End(xlToLeft).Column For i = iLCol To 1 Step -1 If IsEmpty(Cells(2, i)) Then Cells(2, i).EntireColumn.Delete End If Next End Sub
[/vba]
В модуль листа [vba]
Код
Sub DelCol() Dim i As Integer Dim iLCol As Integer iLCol = Cells(2, Columns.Count).End(xlToLeft).Column For i = iLCol To 1 Step -1 If IsEmpty(Cells(2, i)) Then Cells(2, i).EntireColumn.Delete End If Next End Sub
Написал сам код. Но почему-то его нужно запускать 2 раза, чтобы он удалил все столбцы (с пустыми заголовками) в диапазоне . Подскажите в чем тут дело.
Написал сам код. Но почему-то его нужно запускать 2 раза, чтобы он удалил все столбцы (с пустыми заголовками) в диапазоне . Подскажите в чем тут дело.dmm