Ich versuche, ein Makro zu schreiben, um zwei Bereiche, Rng1 und Rng2 in Excel zu vergleichen. Rng1, ("f2: f15"), enthält Zielnummern, die verwendet werden. Rng2, ("a2: a91"), enthält die Nummern für alle möglichen Ziele. Die drei Spalten rechts von Rng2 ("b2: b91"), ("c2: c91") und ("d2: d91") enthalten die x-, y- und z-Koordinatenwerte, die jeder Zielnummer zugeordnet sind. Ich möchte, dass dieses Makro die 3 Spalten rechts von Rng1 ("g2: g15"), ("h2: h15") und ("i2: i15") mit den Koordinatenwerten von Zielnummer in Rng1 gefunden. Der folgende Code, den ich geschrieben habe, ist neu "Laufzeitfehler '13', Typ Mismatch".Bereiche vergleichen und Werte in VBA-Makro auffüllen
Sub macro()
Dim Rng1 As Range, Rng2 As Range, Cell1 As Range, Cell2 As Range
Set Rng1 = Range("f2:f15")
Set Rng2 = Range("a2:a91")
For i = 1 To Rng1
For j = 1 To Rng2
For Each Cell1 In Rng1(i)
For Each Cell2 In Rng1(j)
If Cell1.Value = Cell2.Value Then
'cell1.Offset(0, 1) = cell2.Offset(0, 1)
'cell1.Offset(0, 1) = cell2.Offset(0, 1)
'cell1.Offset(0, 1) = cell2.Offset(0, 1)
Cells(2 + i, 7) = Cells(2 + j, 2)
Cells(2 + i, 8) = Cells(2 + j, 3)
Cells(2 + i, 9) = Cells(2 + j, 4)
End If
Next Cell2
Next Cell1
Next j
Next i
End Sub
Vielen Dank!
Schreiben heraus, wollen sie, genau das, was Sie mit 'For I = 1 bis Rng1' Aussage versuchen zu erreichen. Und wie viele Zellen würden Sie in 'Rng1 (1)' erwarten? –
Ich versuche, I = 1 zu Rng1 als Zähler zu verwenden, um den Wert in Rng1 zu verfolgen, da ich versuche, j als einen Zähler zu verwenden, um Werte in Rng2 zu verfolgen. Ich bin kein sehr erfahrener Programmierer und mag das sehr falsch machen. Vielen Dank! – Chris
Aber Rng1 ist ein Multicell-Bereich-Objekt. Also eine Schleife, die von 1 bis ?? ist nicht sinnvoll. Deshalb erhalten Sie den Typenkonfliktfehler. Sehen Sie sich die VBA-Hilfe für "For ... Next" -Schleifen an. Und dann, später, hast du 'Für jede Zelle in Rng1 (i)'. Wenn I = 1, dann wäre Rng1 (I) die erste Zelle in diesem Bereich. Wiederum wäre jede Zelle in Rng1 (I) nur eine Zelle. Sie könnten wahrscheinlich die "I" - und "J" -Schleifen vollständig eliminieren und trotzdem die einzelnen Zellen in den Bereichen durchlaufen. –