[英]Loop until the last column in a row and fill comboBox
如何使用從 B2 到行尾沒有空格的行的所有值填充我的 ComboBox1?
我知道 :
Sheets("Sheetname").Range("A2:A" & .Range("A65536").End(xlUp).Row).Value
但這是循環到列中最后一行的代碼,我想做相反的事情。
我會使用一個變量 ( LC
) 來存儲上次使用的列的列索引以提高可讀性。 您還應該聲明一個Worksheet
變量,或使用With Block
來確保您的所有對象都被正確限定。
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")
Dim LC As Long
LC = ws.Cells(2, ws.Columns.Count).End(xlToLeft).Column
ws.Range(ws.Cells(2, 2), ws.Cells(2, LC)).[what?]
這是實現Column Loop
Option Explicit
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")
Dim LC As Long
LC = ws.Cells(2, ws.Columns.Count).End(xlToLeft).Column
For i = 2 To LC
If ws.Cells(2, i) = "" Then
MsgBox "Blank Cell: " & ws.Cells(2, i).Address(False, False)
Else
MsgBox "Non-Blank Cell: " & ws.Cells(2, i).Address(False, False)
End If
Next i
我想你要找的是:
Sheets("Sheetname").Range(Cells(2, 2), Cells(2, Cells(2, Columns.Count).End(xlToLeft).Column))
注意 - 在您的示例中,您似乎使用了With
塊 - 因此在所有這些單元格前添加句點以確保您的范圍是完全合格的。
Private Sub UserForm_Activate()
Const cStrFirst As String = "A2" ' First Cell Range
Dim vntRange As Variant ' Range Array
Dim i As Integer ' Columns Counter
vntRange = Range(cStrFirst).Resize(, Cells(Range(cStrFirst).Row, _
Columns.Count).End(xlToLeft).Column)
For i = 1 To UBound(vntRange, 2)
If vntRange(1, i) <> "" Then
ComboBox1.AddItem vntRange(1, i)
End If
Next
End Sub
Private Sub UserForm_Activate()
Const cStrSheet As Variant = "Sheetname" ' Sheet Name/Index
Const cStrFirst As String = "A2" ' First Cell Range
Dim vntRange As Variant ' Range Array
Dim i As Integer ' Columns Counter
With Worksheets(cStrSheet)
vntRange = .Range(cStrFirst).Resize(, .Cells(.Range(cStrFirst).Row, _
.Columns.Count).End(xlToLeft).Column)
End With
For i = 1 To UBound(vntRange, 2)
If vntRange(1, i) <> "" Then
ComboBox1.AddItem vntRange(1, i)
End If
Next
End Sub
dim xrow1 as long, xrow2 as long, ws1 as Worksheet, ws2 as Worksheet
set ws1 = ThisWorkbook.Worksheets("worksheet1")
set ws2 = ThisWorkbook.Worksheets("worksheet2")
xrow2 = 2
for xrow1 = 2 to 65536
if ws1.cells(xrow1, 1) = "" Then
else
ws1.cells(xrow1, 1).value = ws2.cells(xrow2, 1).value
end if
xrow2 = xrow2 + 1
next xrow1
這會將 ws1 第一列中的所有值復制到 ws2 並跳過所有空白行。 我不熟悉組合框的特定語法,但我假設如果您稍微更改我的代碼,您可以使其工作。
如果你想讓我為你的項目編寫一些特定的代碼,讓我看看你到目前為止寫了什么和/或你想要傳輸的一些數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.