[英]VBA Iterate through cells
我正在尋找一種方法來迭代工作表中的單元格以粘貼值。
下面發布的代碼無法識別單元格位置。 有沒有辦法循環單元格位置以逐步將信息粘貼到所需的空間? 我希望代碼將值粘貼到A1:C1中,然后移動4個空格並發布到E1:G1,依此類推。
不確定如何迭代字母以移動單元格。
Sub test()
Dim x As Integer
Dim y As Integer
Dim InputSheet As Worksheet
Dim myBook As Workbook
Set myBook = Excel.ActiveWorkbook
Set InputSheet = myBook.Sheets("InputSheet")
For y = 0 To 5
x = 4
InputSheet.Range("A1 + 4*y : C1 + 4*y").Value = x
Next y
End Sub
我嘗試使用“Cells”來做到這一點。
Sub test()
Dim x As Integer
Dim y As Integer
Dim InputSheet As Worksheet
Dim myBook As Workbook
Set myBook = Excel.ActiveWorkbook
Set InputSheet = myBook.Sheets("InputSheet")
For y = 0 To 5
x = 4
InputSheet.Range(InputSheet.Cells(1, 4 * y + 1), InputSheet.Cells(1, 4 * y + 3)).Value = x
Next y
End Sub
您可以使用偏移功能。
For i = 0 to 5
x = 4
InputSheet.Range("A1:C1").Offset(0, i * 4) = x
Next i
你告訴工作簿從字面上尋找范圍“A1 + 4 * y:C1 + 4 * y”,這顯然不是一個有效的地址。 您需要評估字符串外部的數字表達式,轉換回字符串(顯式地使用Cstr
或者您可以將表達式放在括號中並讓編譯器為您執行此操作,因為VBA是動態類型的,這是您可能需要的重要概念查找。基本上它能夠從上下文中找出它正在處理字符串類型變量)並最終將其恢復到您的地址以使其工作。
由於您似乎是vba /編碼的新手,我建議您弄清楚如何使用斷點和監視來查看您的機器如何實際評估您的變量。
InputSheet.Range("A" & (1+4*y) & ":C" & (1+4*y)).Value = x
我做了以下代碼,因為我也遇到了一些運行時錯誤。 希望能幫助到你。
Dim wb As Workbook
Dim ws As Object
Set wb = Workbooks("Libro2")
Set ws = wb.Sheets("Hoja1")
For i = 1 To 10000
Dim strrangoa As String
Dim strrangob As String
'Creating a string variable replaces selecting the cell
strrangoa = "A" & i
strrangob = "B" & i
'If the active cell does not have data, it exits the loop
If ws.Range(strrangoa).Value = "" Then
GoTo Salir
Else
'The data from cells in Column A are passed to Column B
ws.Range(strrangob).Value = ws.Range(strrangoa).Value
End If
Next
Salir:
End Sub
好的,這里的每個其他答案都沒有使用.Resize()
函數來選擇推薦方式的單元格范圍。
Option Explicit
Sub Test()
Dim x As Integer
Dim y As Integer
Dim InputSheet As Worksheet
Dim myBook As Workbook
Set myBook = Excel.ActiveWorkbook
Set InputSheet = myBook.Sheets("InputSheet")
For y = 0 To 5
x = 4
' Start for "A1", move down 4*y rows, and select
' one row and 3 columns to set the value
InputSheet.Range("A1").Offset(4*y, 0).Resize(1, 3).Value = x
' Similar to using the `.Cells()` method
' InputSheet.Range("A1").Cells(4*y+1, 1).Resize(1, 3).Value = x
Next y
End Sub
PS。 你也可以這樣做
InputSheet.Range("A2").Resize(1,3).Value = Array(1,2,3)
將單元格A2,B2,C2設置為1,2,3
要么
InputSheet.Range("A2").Resize(3,1).Value = _
WorksheetFunction.Transpose(Array(1,2,3))
將單元格A2,A3,A4設置為1,2,3
閱讀在這里從微軟如何使用.Resize()
.Offset()
和.Cells()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.