Страницы: 1
RSS
Адрес пустого столбца
 
Здравствуйте!
Подскажите, пожалуйста, как при помощи VBA можно найти адрес первого столбца, в котором нет никаких значений,
начиная со столбца "А"?
Например, у меня есть активный лист. В столбце "А", "В" и "С" что-то уже написано. Значит, следующий пустой столбец "D". Как это можно вычислять каждый раз автоматически?
Спасибо
Изменено: Oda412 - 09.07.2014 17:45:32
 
Код
sch_goriz = Cells(1, 1).End(xlToRight).Column+1
Изменено: Мотя - 09.07.2014 17:57:54
 
Это имелось ввиду?
Код
Sub qqq()
For i = 1 To 16384
    If Cells(Rows.Count, i).End(xlUp).Row = 1 Then
    MsgBox ("Пустой столбец - №" & CStr(i))
    Exit Sub
    End If
Next i
End Sub 

 
 
Ivan.kh, заполним ячейки А1 и В1 - и что покажет в Вашем коде MsgBox?
И зачем стащили моё имя для макросов ))
 
на sub t() копирайт у меня, еслечо.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Про t я помню и не претендую)
 
Юрий М, да, не учел, тогда наверное как-то так:
Код
Sub iii()
For i = 1 To 16384
    If Cells(Rows.Count, i).End(xlUp).Row = 1 And Cells(1, i) = "" Then
    MsgBox ("пустой столбец- №" & CStr(i))
    Exit For
    End If
Next i
End Sub

Имя макроса поправил.  :)  
А какие имена, кроме "qqq" и "t" застолблены, чтоб не нарваться на выплату роялти ?  :D
Изменено: Ivan.kh - 10.07.2014 09:57:10
 
Мотя,Юрий М, спасибо за помощь!
Ivan.kh, спасибо за последний код, он работает как  надо :))  
 
А такие варианты определения границ данных не подходят?
Взято с сайта Павла Юрьевича Климова
Код
определение номера строки и столбца последней заполненной ячейки.

iRow = Cells(Rows.Count, 3).End(xlUp).Row
iRow = Cells(Rows.Count, "C").End(xlUp).Row
iClm = Cells(10, Columns.Count).End(xlToLeft).Column

With ActiveSheet.UsedRange
     iRow = .Row + .Rows.Count - 1
     iClm = .Column + .Columns.Count - 1
End With

iAddress = Range("A1").SpecialCells(xlLastCell).Address
iRow = Range("A1").SpecialCells(xlLastCell).Row
iClm = Range("A1").SpecialCells(xlLastCell).Column

On Error Resume Next
iRow = Cells.Find(What:="*", LookIn:=xlValues, SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
iClm = Cells.Find(What:="*", LookIn:=xlValues, SearchDirection:=xlPrevious, SearchOrder:=xlByColumns).Column  
 
Igor67, первый пустой столбец, согласно условию ТС, может быть внутри UsedRange. Если я правильно Вас понял.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Я не понял само условие, но если нужно найти разрыв в данных можно просто [a1].End(xlToRight).Column+1 Выбор решения зависит от конкретной задачи.
Страницы: 1
Наверх