Надеюсь, я могу найти помощь с этим. Я вытягиваю информацию из Excel из 2 столбцов (имя хоста, IP). Важные декларации:
Dim HWSWArray() As Variant
Dim v As Variant.
Мой HWSWArray загружен, и в качестве примера у меня есть HWSWArray (0) (0) -> Имя хоста и HWSWArray (0) (1) -> IP
Я хочу просмотреть их и выполнить внешнее сравнение с другой строкой, поэтому мой цикл записан так:
For Each v In HWSWArray
If v(0) = POAMHost Then
DoThings
ElseIf v(1) = POAMHost Then
Do Things
End If
Next
Я получаю несоответствие типов, как только он оценивает первый оператор if. Я сбит с толку, потому что они оба варианта v и HWSWArray и не должны v как вариант соответствовать любому типу, с которым он сопоставляется?
Может быть, мне не хватает леса для деревьев? Я могу опубликовать полный код, если это необходимо, но мне нужно будет отредактировать некоторые вещи.
Чтобы добавить больше информации с кодом, которым я могу легко поделиться, в прошлом я делал нечто подобное, и я не могу сказать,какая разница. Я посмотрю на реализацию ваших предложений для цикла For i, если я не могу заставить это работать, но я пытаюсь понять, почему он не будет работать в своем текущем качестве.
'Load BArray
Do While Counter <> B1930Rows + 1
IPCell = Assets.Range("X" & Counter)
hostCell = Assets.Range("W" & Counter)
If IsEmpty(Assets.Range("W" & Counter)) = True And IsEmpty(Assets.Range("X" & Counter)) = True Then
Counter = Counter + 1
ElseIf IsEmpty(Assets.Range("W" & Counter)) = True And IsEmpty(Assets.Range("X" & Counter)) = False Then
BArray(i) = Array("Null", UCase(IPCell))
i = i + 1
Counter = Counter + 1
ElseIf IsEmpty(Assets.Range("W" & Counter)) = False And IsEmpty(Assets.Range("X" & Counter)) = True Then
BArray(i) = Array(UCase(hostCell), "Null")
i = i + 1
Counter = Counter + 1
ElseIf IsEmpty(Assets.Range("W" & Counter)) = False And IsEmpty(Assets.Range("X" & Counter)) = False Then
BArray(i) = Array(UCase(IPCell), UCase(hostCell))
i = i + 1
Counter = Counter + 1
Else
Counter = Counter + 1
End If
Loop
'MsgBox ("Here")
'Setting up script to handle the POAM Analysis Portion
Counter = 2
Dim statusCell As String
'Dim hostCell As String
Do While Counter <> POAMRows + 1
statusCell = POAM.Range("M" & Counter)
hostCell = POAM.Range("AE" & Counter)
If statusCell = "Ongoing" Then
For Each v In BArray
If v(0) = hostCell Then
Output.Range("A" & SummaryCounter) = POAM.Range("A" & Counter)
Output.Range("B" & SummaryCounter) = POAM.Range("C" & Counter)
Output.Range("C" & SummaryCounter) = POAM.Range("D" & Counter)
Output.Range("D" & SummaryCounter) = POAM.Range("E" & Counter)
Output.Range("E" & SummaryCounter) = POAM.Range("F" & Counter)
Output.Range("F" & SummaryCounter) = POAM.Range("G" & Counter)
Output.Range("G" & SummaryCounter) = POAM.Range("R" & Counter)
Output.Range("H" & SummaryCounter) = POAM.Range("V" & Counter)
Output.Range("I" & SummaryCounter) = POAM.Range("AB" & Counter)
Output.Range("J" & SummaryCounter) = POAM.Range("AE" & Counter)
SummaryCounter = SummaryCounter + 1
ElseIf v(1) = hostCell Then
Output.Range("A" & SummaryCounter) = POAM.Range("A" & Counter)
Output.Range("B" & SummaryCounter) = POAM.Range("C" & Counter)
Output.Range("C" & SummaryCounter) = POAM.Range("D" & Counter)
Output.Range("D" & SummaryCounter) = POAM.Range("E" & Counter)
Output.Range("E" & SummaryCounter) = POAM.Range("F" & Counter)
Output.Range("F" & SummaryCounter) = POAM.Range("G" & Counter)
Output.Range("G" & SummaryCounter) = POAM.Range("R" & Counter)
Output.Range("H" & SummaryCounter) = POAM.Range("V" & Counter)
Output.Range("I" & SummaryCounter) = POAM.Range("AB" & Counter)
Output.Range("J" & SummaryCounter) = POAM.Range("AE" & Counter)
SummaryCounter = SummaryCounter + 1
End If
Next
Counter = Counter + 1
Else
Counter = Counter + 1
End If
Loop