Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: wenn kein wert in Zelle, dann weitere zelle prüfen

wenn kein wert in Zelle, dann weitere zelle prüfen
09.05.2014 13:27:35
Maik
Hi,
ich brauche hilfe, wie ich in meinem kleinen code dem rechner sagen kann, dass er nach prüfung von r13, bei nicht leerer zelle zusätzlich zur nächsten zelle springt und diese ebenfalls überprüft.
sprich bei r13 und e13 sollte die 13 eine variable sein und hochzählen, bis die abbruchbedinung erfüllt ist.
Option Explicit
Sub test()
If Tabelle1.[r13] = "" Then
Else
Dim text As String
text = Tabelle1.[r13]
With Tabelle1.[e13]
.AddComment (text)
End With
End If
End Sub

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: wenn kein wert in Zelle, dann weitere zelle prüfen
09.05.2014 13:39:18
EtoPHG
Hallo Maik,
VBA gut wie bitte?
1. Die [A1] Schreibweise in VBA bitte so schnelle wie möglich vergessen! Mit .Range/.Cells Objekten arbeiten!
2. Zitat: ...Zusätzlich... springen... ? Es gibt z.B. Do While Loop in VBA. Es ist zwar Frühling, aber springen ;-)
3. Text ist ein VBA-Keyword, sollte also nicht als Variablenamen missbraucht werden!
4. Was ist der Sinn des Code-Konstrukts an sich, bzw. was soll als Resultat rauskommen?
Gruess Hansueli

Anzeige
AW: wenn kein wert in Zelle, dann weitere zelle prüfen
09.05.2014 13:52:31
Maik
ich verstehe nicht, was du meinst :D
Option Explicit
Sub test()
Columns("E:E").Select
Selection.ClearComments
If Tabelle1.[r13] = "" Then
Else
Dim t As String
t = Tabelle1.[r13]
With Tabelle1.[e13]
.AddComment (t)
End With
End If
End Sub
das ist der code. Sinn dahinter ist, dass überprüft werden soll, ob etwas in r13 steht. wenn die zeile nicht leer ist, soll ein kommentar, der inr13 steht in e13 geschrieben werden UND die nächste zeile überprüft werden. also r14, überprüft, wenn nicht leer dann schreibe von r14 in e14.
damit ich nicht jede einzelne zeile eingeben muss, dachte ich mir, man kann in die vorhandene if schleife hinter else eine variable schrieben, die die 13 ersetzt und bei eintreten des else falles um 1 hochgezählt wird.
also eine rekursive if schleife :)
eigentlich reichen einfachste vba kenntnisse, es geht nur um die syntax, da ich nciht weiß, wie ich dem rechne rklarmachen soll, dass er immer +1 zur 13 dazuzählen soll.

Anzeige
Im Forum findest du Tausende Schleifen! (owT)
09.05.2014 13:55:09
EtoPHG

AW: Im Forum findest du Tausende Schleifen! (owT)
09.05.2014 14:04:08
Maik
die schleife besteht doch schon, ich weiß nur nicht, wie ich dem sagen kann, dass der bei r13 eine hochzählen soll
ich brauche eine variable die bei 13 +1 hochzählt
hab den code jetzt angepasst, wie er sein soll, nur kenne ich die syntax nicht von vba :(
darum geht es mir....
Option Explicit
Sub test()
Columns("E:E").Select
Selection.ClearComments
Dim x As Integer
x=13
If Tabelle1.[rx] = "" Then
Else
Dim t As String
t = Tabelle1.[r13]
With Tabelle1.[e13]
.AddComment (t)
x+1
End With
End If
End Sub

Anzeige
AW: Im Forum findest du Tausende Schleifen! (owT)
09.05.2014 14:18:30
Daniel
HI
wenn du einzelne Zellen per Schleife ansprechen willst, nimmst du am besten die Cells-Funktion.
dort kannst du Zeilen- und Spaltennummer als Zahl und somit auch als Variable angeben:
dim x as long
x = 13
Do while Tabelle1.Cells(x, 18)  ""
Tabelle1.Cells(x, 5).AddComment Tabelle1.Cells(x, 18).Text
x = x + 1
Loop

Gruß Daniel

Anzeige
AW: Im Forum findest du Tausende Schleifen! (owT)
09.05.2014 14:22:51
Maik
ja super, genau so soll es sein, vielen dank für diesen äusserst brauchbaren kommentar!!!
;
Anzeige
Anzeige

Infobox / Tutorial

Zellenprüfungen in Excel mit VBA: Wenn kein Wert in Zelle, dann weitere Zelle prüfen


Schritt-für-Schritt-Anleitung

Um in Excel VBA zu prüfen, ob eine Zelle leer ist, und dann zur nächsten Zelle zu springen, kannst du eine Schleife verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Rechtsklicke im Projekt-Explorer auf dein Projekt und wähle Einfügen > Modul.

  3. Schreibe den Code: Kopiere den folgenden VBA-Code in das Modul:

    Option Explicit
    Sub test()
       Dim x As Long
       x = 13 ' Startzeile
    
       ' Lösche vorherige Kommentare in Spalte E
       Columns("E:E").Select
       Selection.ClearComments
    
       ' Schleife, um Zellen zu überprüfen
       Do While Tabelle1.Cells(x, 18) <> "" ' Spalte R ist die 18. Spalte
           ' Füge Kommentar in Spalte E ein
           Tabelle1.Cells(x, 5).AddComment Tabelle1.Cells(x, 18).Text ' Spalte E ist die 5. Spalte
           x = x + 1 ' Zeilenindex erhöhen
       Loop
    End Sub
  4. Führe das Makro aus: Schließe den VBA-Editor und führe das Makro über Entwicklertools > Makros aus.


Häufige Fehler und Lösungen

  • Fehler: „Objektvariable oder With-Blockvariable nicht festgelegt“
    Lösung: Stelle sicher, dass deine Zellenbezüge korrekt sind und dass die Arbeitsmappe richtig referenziert wird.

  • Fehler: „Typenkonflikt“
    Lösung: Achte darauf, dass die Datentypen in deinem Code übereinstimmen, z.B. Dim x As Long.

  • Problem: Kommentare werden nicht gesetzt.
    Lösung: Überprüfe, ob die Zellen, die du prüfen möchtest, tatsächlich Werte enthalten.


Alternative Methoden

Wenn du die Excel VBA Schleife: wenn Wert in Zelle dann nicht verwenden möchtest, kannst du auch andere Ansätze in Betracht ziehen, wie:

  • Verwendung von If-Anweisungen ohne Schleifen: Wenn du nur eine kleine Anzahl von Zellen überprüfen möchtest, kannst du direkt If-Anweisungen verwenden.

  • Excel-Formeln: Manchmal kannst du auch Excel-Formeln nutzen, um ähnliche Ergebnisse ohne VBA zu erzielen.


Praktische Beispiele

Hier sind einige praktische Szenarien, in denen du die VBA Schleife verwenden kannst:

  • Kommentare in Spalte E hinzufügen: Wenn in Spalte R (z.B. R13, R14) Werte stehen, können diese als Kommentare in der entsprechenden Zeile der Spalte E (E13, E14) hinzugefügt werden.

  • Datenüberprüfung: Du könntest auch eine ähnliche Schleife verwenden, um zu überprüfen, ob alle Zellen in einem bestimmten Bereich ausgefüllt sind.


Tipps für Profis

  • Verwende Option Explicit: Dies hilft dir, Fehler beim Variablen-Management zu vermeiden.

  • Verwende Cells anstelle von Range: Dies ist flexibler, da du mit Variablen arbeiten kannst.

  • Teste deinen Code regelmäßig: Führe das Makro schrittweise aus, um sicherzustellen, dass es wie gewünscht funktioniert.


FAQ: Häufige Fragen

1. Wie ändere ich die Startzeile?
Du kannst die Startzeile ändern, indem du den Wert von x in x = 13 anpasst.

2. Was passiert, wenn eine Zelle in Spalte R leer ist?
Die Schleife wird bei einer leeren Zelle stoppen und keine weiteren Kommentare setzen.

3. Wie kann ich den Code anpassen, um mehrere Spalten zu überprüfen?
Du müsstest die Schleife entsprechend erweitern und zusätzliche Bedingungen hinzufügen, um mehrere Spalten zu berücksichtigen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige