2017-02-10 10 views
0

Здравствуйте, я пишу код формы пользователя в VBA.Форма пользователя VBA заполняет весь столбец

Код находит столбец с заданным именем, а затем он должен заполнять столбец до последней строки, содержащей данные, со значением из пользовательской формы.

Любые идеи, как я могу это сделать?

Dim intBB As Integer 
Do While Worksheets("Sheet1").Cells(1, intBB) <> "" 
     If Worksheets("Sheet1").Cells(1, intBB).Value = "HPL" Then 
      With Worksheets("Sheet1") 
       Set rngBB = .Range(.Cells(1, intBB), .Cells(1, intBB))      
      End With 
     Exit Do 

     End If 
      intBB = intBB + 1 
    Loop 

Cells(2, intBB).Value = HPLBox.Value 

ответ

0

Вы должны найти последнюю использованную строку в колонке вы найдете с:
LastRow = .Cells(.Rows.Count, intBB).End(xlUp).Row

И тогда вы можете применить значение для всего диапазона непосредственно: rngBB.value = HPLBox.value

Dim intBB As Long 
Dim LastRow As Long 
Dim rngBB As Range 

With ThisWorkbook.Sheets("Sheet1") 
    Do While .Cells(1, intBB) <> vbNullString 
     If .Cells(1, intBB).value <> "HPL" Then 
     Else 
      LastRow = .Cells(.Rows.Count, intBB).End(xlUp).Row 
      Set rngBB = .Range(.Cells(1, intBB), _ 
           .Cells(LastRow, intBB)) 
      Exit Do 
     End If 
     intBB = intBB + 1 
    Loop 
End With 
rngBB.value = HPLBox.value 
0

Я бы пошел следующим образом

Dim rngBB As Range 

With Worksheets("Sheet1") 
    Set rngBB = .Range("A1", .Cells(1, .Columns.count).End(xlToLeft)).Find(what:="HPL", LookIn:=xlValues, lookat:=xlWhole) 
    If Not rngBB Is Nothing Then .Range(rngBB.Offset(1), .Cells(.Rows.count, rngBB.Column).End(xlUp)).Value = HPLBox.Value 
End With