請什麼毛病下面代碼嚴厲批評。
好吧,你問它:P
我是新來的變體功能。
Variant
不是功能。它是一個數據類型。你可能想讀THIS
使用.Find
你的代碼假定它會發現在每片Price
。如果特定工作表中沒有Price
,該怎麼辦?你的代碼將失敗。您需要捕獲.Find
。例如
Dim aCell As Range
With Sheets(counter1)
Set aCell = .Cells.Find(What:="Price", LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False)
End With
If Not aCell Is Nothing Then
'
'~~> Rest of the code
'
Else
Debug.Print "`Price` not found in sheet " & Sheets(counter1).Name
End If
你可以閱讀更多的.Find
HERE
存儲陣列
這是一個非常簡單的例子,以幫助在從多張兩個單元格的值您瞭解如何將這些值存儲在陣列中
Dim MyArray()
Dim n As Long
n = 1
ReDim MyArray(n)
MyArray(n) = Sheets("Sheet1").Range("A1").Value & _
"-" & _
Sheets("Sheet1").Range("B1").Value
n = n + 1
'<~~ We need to use Preserve else the previous data will be lost
ReDim Preserve MyArray(n)
MyArray(n) = Sheets("Sheet2").Range("A1").Value & _
"-" & _
Sheets("Sheet2").Range("B1").Value
n = n + 1
ReDim Preserve MyArray(n)
MyArray(n) = Sheets("Sheet3").Range("A1").Value & _
"-" & _
Sheets("Sheet3").Range("B1").Value
所以,當你使用.Find
那麼下面
MyArray(n) = Sheets("Sheet3").Range("A1").Value & _
"-" & _
Sheets("Sheet3").Range("B1").Value
成爲
MyArray(n) = aCell.Value & _
"-" & _
aCell.Offset(,1).Value
如果你願意,你也可以省略存儲陣列中的第一個單元格的值,因爲它會一直是Price
。在這種情況下,上面的代碼簡單地變爲
MyArray(n) = aCell.Offset(,1).Value
從上述陣列
考慮到上述示例寫入的細胞,我們將結果寫入陣列說C1
在Sheet3
Dim MyArray()
Dim n As Long
ReDim MyArray(n)
MyArray(n) = Sheets("Sheet1").Range("A1").Value & _
"-" & _
Sheets("Sheet1").Range("B1").Value
n = n + 1
ReDim Preserve MyArray(n)
MyArray(n) = Sheets("Sheet2").Range("A1").Value & _
"-" & _
Sheets("Sheet2").Range("B1").Value
ThisWorkbook.Sheets("Sheet3").Range("C1").Resize(UBound(MyArray) + 1, 1).Value = _
Application.Transpose(MyArray)
還有1個問題,是我在使用變體而不是字符串在這種情況下數組錯?
不,沒有什麼不對。但是,我會使用一個字符串數組,而不是將不同工作表中的字符串存儲到數組中。這裏是一個使用Variant數組的例子。
Dim MyArray As Variant
MyArray = Sheets("Sheet1").Range("A1:B1").Value
Debug.Print MyArray(1, 1)
Debug.Print MyArray(1, 2)
進一步閱讀(強烈推薦)
VBA Arrays And Worksheet Ranges
+1,雖然不是那麼苛刻如我所料。 :D – Manhattan
@ BK201:我幾乎不知道因爲'苛刻':p –
加一,很多有用的提示和信息。看起來像一個新的節日後發現的熱情:) – L42