ich überlege mir schon die ganze Zeit, warum hier
Do While Worksheets("Tabelle1").Range(spalte & anfanga) = 0
eine Fehlermeldung kommt ?
Es muss doch möglich sein die Spalten hochzuzählen , auch mit range und nicht mit cells, oder ?
                    
Do While Worksheets("Tabelle1").Range(spalte & anfanga) = 0
eine Fehlermeldung kommt ?
Es muss doch möglich sein die Spalten hochzuzählen , auch mit range und nicht mit cells, oder ?
                    
Range(Cells(1,1),Cells(2,2)).Select
Hiermit würdest du halt die Zellen A1:B2 auswählen.
Hoffe das hilft!
Gruss
TImo
                    
Sub Vergleich()
'
' vergleich Makro
' Makro am 27.5.2002 von PC-User aufgezeichnet
'
'
Dim wert1, wert2 As String
Dim zelleninhalt
Dim anfangB
Dim anfanga
Dim spalte
spalte = 1
anfanga = 2
Do While Worksheets("Tabelle1").Cells(spalte, anfanga) = 0
anfanga = anfanga + 1
Loop
anfangB = 2
Do While Worksheets("Tabelle2").Cells(spalte, anfangB) = 0
anfangB = anfangB + 1
Loop
For spalte = 1 To 2
a = anfanga
i = anfangB
zelleninhalt = 1 / 10
Do While zelleninhalt > 0
     wert1 = Worksheets("Tabelle1").Cells(spalte, a)
     
     wert2 = Worksheets("Tabelle2").Cells(spalte, i)
If wert1 = wert2 Then
MsgBox "richtig"
    Else: MsgBox "falsch"
    Cells(spalte & i).Interior.ColorIndex = 4
    End If
a = a + 1
MsgBox a & " a "
i = i + 1
MsgBox i & " i"
zelleninhalt = Worksheets("Tabelle2").Cells(spalte, i)
  
Loop
Next
End Sub
Mit diesem möchte ich die beiden Tabellen vergleichen und die unterschiede markieren.
Jedoch bekom ich nun eine Fehlermeldung bei der Do while Bedingung. Ich kann anscheinend bei Cell nicht die 0 so stehn lassen, jedoch ist dies erforderlich. Mit Range geht dies, jedoch kann ich dort nicht die Spalten hochzählen
                    
Was möchtest du denn mit folgender Zeile bezwecken?
Do While Worksheets("Tabelle1").Cells(spalte, anfanga) = 0
Soll das heissen, er soll das so lange wiederholen, bis nicht 0 in der Zelle steht? Dann müsste die Zeile so lauten:
Do While Worksheets("Tabelle1").Cells(spalte, anfanga).Value = 0
Gib mal ein paar mehr Infos bitte!
Timo
                    
Definiere Deine Variablen Beginne mit der Definition der Variablen, die Du benötigst. Zum Beispiel:
Dim wert1 As String
Dim wert2 As String
Dim spalte As Integer
Dim anfanga As IntegerSetze den Startwert Wähle eine Startzeile und -spalte. Dies könnte so aussehen:
spalte = 1
anfanga = 2Nutze die Do While Schleife Verwende eine Do While Schleife, um durch die Zellen zu iterieren:
Do While Worksheets("Tabelle1").Cells(spalte, anfanga).Value = 0
   anfanga = anfanga + 1
LoopVergleich der Zellen Vergleiche die Werte in den Zellen:
If wert1 = wert2 Then
   MsgBox "richtig"
Else
   MsgBox "falsch"
   Worksheets("Tabelle1").Cells(spalte, anfanga).Interior.ColorIndex = 4
End IfZellen iterieren Erhöhe die Zeilen- oder Spaltennummer nach jedem Durchlauf:
anfanga = anfanga + 1Fehlermeldung bei Range
Wenn Du eine Fehlermeldung erhältst, wenn Du Range(spalte & anfanga) verwendest, könnte das daran liegen, dass Du die Zellen nicht korrekt referenzierst. Stattdessen solltest Du Cells(spalte, anfanga) verwenden.
Nullwerte in Zellen
Wenn Du in einer Do While Schleife eine Zelle auf 0 überprüfst und eine Fehlermeldung bekommst, stelle sicher, dass Du .Value hinzufügst:
Do While Worksheets("Tabelle1").Cells(spalte, anfanga).Value = 0Eine Alternative zu Range ist die Verwendung von Cells, wenn Du mit Variablen arbeitest. Zum Beispiel:
Range(Cells(1, 1), Cells(2, 2)).SelectHiermit wählst Du einen Bereich von Zellen aus, der von der ersten bis zur zweiten Zeile und von der ersten bis zur zweiten Spalte reicht.
Hier ist ein einfaches Beispiel zur Verwendung von vba cells(zeile, spalte):
Sub Beispiel()
    Dim i As Integer
    For i = 1 To 10
        Worksheets("Tabelle1").Cells(i, 1).Value = i
    Next i
End SubDieses Skript füllt die erste Spalte mit den Werten von 1 bis 10.
Verwende Option Explicit
Setze am Anfang Deines Moduls Option Explicit, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler frühzeitig zu erkennen.
Vermeide Magic Numbers Nutze Konstanten für Deine Zeilen- und Spaltenzahlen, um den Code lesbarer zu machen. Zum Beispiel:
Const START_ROW As Integer = 21. Warum funktioniert Range(spalte & anfanga) nicht?
Range kann nicht mit Variablen in dieser Form verwendet werden. Nutze stattdessen Cells(spalte, anfanga).
2. Wie kann ich eine ganze Spalte auswählen? Du kannst eine ganze Spalte mit folgendem Befehl auswählen:
Worksheets("Tabelle1").Columns(1).Select3. Was ist der Unterschied zwischen Range und Cells?
Range wird verwendet, um einen spezifischen Bereich von Zellen zu referenzieren, während Cells eine bestimmte Zelle basierend auf Zeilen- und Spaltennummer zurückgibt.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen