0
我是VBA詞典的新手。我想要做的是評估一張表的每一行。如果J列中的值是「100」,那麼我想在字典中創建一個鍵/項目條目。如果J列中有任何其他值,我不希望創建條目並讓宏查看下一行數據。創建符合條件的VBA字典條目
目前,我有下面的代碼:
Dim x, x2, y, y2()
Dim i As Long
Dim dict As Object
Dim LastRowTwo As Long, shtOrders As Worksheet, shtReport As Worksheet
Set shtOrders = Worksheets("Orders")
Set shtReport = Worksheets("Mapping")
Set dict = CreateObject("Scripting.Dictionary")
With shtReport
LastRow = .Range("G" & Rows.Count).End(xlUp).Row
x = .Range("G2:G" & LastRow).Value
x2 = .Range("I2:I" & LastRow).Value
Set SelectionRNG = Worksheets("Mapping").Range("G2:J" & LastRow)
For Each rngrow In SelectionRNG.Rows
If rngrow.Cells(1, 4) = "100" Then
dict.Item(x(i, 1)) = x2(i, 1)
End If
Next
End With
我知道這行:
dict.Item(x(i, 1)) = x2(i, 1)
是我的問題。我已經使用這種語法在下面的代碼,它工作正常:
For i = 1 To UBound(x, 1)
dict.Item(x(i, 1)) = x2(i, 1)
Next i
我被困在如何改變任我「rngrow代碼」語法添加字典條目,而不使用「I」或直接調整上面的代碼以包含一個IF語句來檢查J列中的值(並且只在J = 100時爲當前正在評估的行創建一個條目)
如果上面的代碼不清楚,在列G中,該項目將在列I.(我後來查找列G並檢索列I的值。)
正如我所說,我是新來的,所以我appre提供任何幫助!
乾杯!
也許代替'和'rngrow.Row i' - 1' – YowE3K
哎呀!我曾建議'rngrow.Row - 1'的替代方法,然後將其刪除,因爲我認爲這些單元格位於不同的工作表上,但現在意識到它們不是。因此,我會再次提出建議 - 您可以使用'rngrow.Cells(1,1).Value'而不是'x(i,1)'和'rngrow.Cells(1,3).Value'來代替' x2(i,1)'。 – YowE3K
@ YowE3K感謝這兩種解決方案,'rngrow.row-1'取代'i'的作品 - 您的解決方案也適用,我認爲它更加透明,所以我將它應用於我的代碼。 – RugsKid