Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1352to1356
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

wenn, dann in VBA

wenn, dann in VBA
16.03.2014 14:25:02
Wolfgang
Hallo,
die Abfrage: Wenn Spalte D "ja" oder "nein" = Wert 0, wenn Spalte D leer (bezieht sich aber nur auf Zellen einer befüllten Zeile), dann Wert 1, würde ich gerne in VBA umgesetzt haben. Das "Ergebnis" soll jeweils in Spalte T ausgewiesen werden. Wie kann ich da vorgehen? - Danke schon jetzt für die Rückmeldungen.
Gruß - Wolfang

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: wenn, dann in VBA
16.03.2014 14:28:57
Matze
Hallo Wolfgang,
wenn du die Formel in der Zelle T schon hast kannst du diese direkt beim erstellen mit dem Makrorecorder aufzeichnen.
Matze

AW: wenn, dann in VBA
16.03.2014 14:38:29
Beverly
Hi Wolfgang,
meinst du so etwas:
   If Cells(lngZeile, "D") = "ja" Or Cells(lngZeile, "D") = "nein" Then
Cells(lngZeile, "T") = 0
ElseIf Cells(lngZeile, "D") = "" Then
Cells(lngZeile, "T") = 1
End If


AW: wenn, dann in VBA
16.03.2014 15:53:24
Wolfgang
Hallo Karin,
danke für Deine Rückmeldung. Das meinte ich. Habe versucht, den Code auch schon umzusetzen, allerdings erscheint noch Fehlermeldung "anwendungs oder objektdefinierter Fehler". Muß ich da noch etwas deklarieren? - Danke schon jetzt wieder für Deine Rückmeldung.
Gruß - Wolfgang

Anzeige
AW: wenn, dann in VBA
16.03.2014 16:01:38
Beverly
Hi Wolfgang,
womit ist denn die Variable lngZeile belegt?


AW: wenn, dann in VBA
16.03.2014 16:09:51
Wolfgang
Hallo Karin,
da muss ich passen, verstehe Deine Frage nicht - habe zunächst "einfach" Deine Eintragungen so übernommen.
Gruß - Wolfgang

AW: wenn, dann in VBA
16.03.2014 17:54:23
Beverly
Hi Wolfgang,
ich weiß ja nicht, für welche Zeile du den Code verwenden willst, deshalb habe ich die Zalladresse aus einer Variablen (lngZeile) und dem Spaltenbuchstaben zusammengesetzt, denn Cells verlangt Cells(Zeile, Spalte). Spalte kannst du dabei als Spaltennummer (Zahlenwert) oder Spaltenbuchstabe angeben, Zeile muss immer ein Zahlenwert sein.
Der Variablen lngZeile musst du also erst noch mit einem Zahlenwert belegen. Angenommen, du willst Zeile 14 verwenden, dann musst du der Variablen erst diesen Wert zuweisen:

Dim lngZeile as Long
lngZeile = 14
If Cells(lngZeile, "D") = "ja" Or Cells(lngZeile, "D") = "nein" Then
Cells(lngZeile, "T") = 0
ElseIf Cells(lngZeile, "D") = "" Then
Cells(lngZeile, "T") = 1
End If


Anzeige
AW: wenn, dann in VBA
16.03.2014 18:29:22
Wolfgang
Hallo Karin,
wenn es Dir recht ist, habe ich einmal eine Mustermappe beigefügt. Die Zeilen können variieren. Der Code selbst soll bei Workbook_open starten, um dann die jeweiligen Veränderungen und Neueinträge ensprechend einzutragen bzw. zu aktualisieren. Danke schon wieder erneut.
Gruß - Wolfgang
https://www.herber.de/bbs/user/89686.xlsm

AW: wenn, dann in VBA
16.03.2014 18:46:38
Beverly
Hi Wolfgang,
beim Öffnen der Arbeitsmappe sollen also ALLE Zeilen durchlaufen und die Bedingung gepüft werden - das hätte ich deinem Eröffnungsbeitrag nicht entnommen. Man sollte die Aufgabe schon komplett formulieren, wenn man eine entsprechend passende Antwort bekommen möchte.
Kopiere foldenden Code ins Codemodul DieseArbeitsmappe:
Private Sub Workbook_Open()
Dim lngZeile As Long
lngZeile = 2
With Worksheets("Grunddaten")
For lngZeile = 1 To IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp). _
Row, .Rows.Count)
If .Cells(lngZeile, "D") = "Ja" Or .Cells(lngZeile, "D") = "Nein" Then
.Cells(lngZeile, "T") = 0
ElseIf Cells(lngZeile, "D") = "" Then
.Cells(lngZeile, "T") = 1
End If
Next lngZeile
End With
End Sub

Grußformel

Anzeige
Danke Karin - das klappt super!!!
16.03.2014 18:59:19
Wolfgang
Hallo Karin,
sorry zunächst für die viele Arbeit, die ich Dir wohl offensichtlich mit meinen ursprünglichen Beiträgen gemacht habe. Ich hatte daher schon erahnt, dass ich nicht die richtigen Worte getroffen hatte und somit die Mustermappe beigefügt. Das klappt nun hervorragend, der Code macht es nun genau, wie ich es mir gewünscht hatte. Hab tausend Dank dafür, hast mir sehr geholfen.
Gruß und einen schönen (Rest)-Sonntag noch.
Wolfgang

AW: wenn, dann in VBA
16.03.2014 15:58:00
Wolfgang
Hallo Karin,
danke für Deine Rückmeldung. Das meinte ich. Habe versucht, den Code auch schon umzusetzen, allerdings erscheint noch Fehlermeldung "anwendungs oder objektdefinierter Fehler". Muß ich da noch etwas deklarieren? - Danke schon jetzt wieder für Deine Rückmeldung.
Gruß - Wolfgang

Anzeige
Rückfragen
16.03.2014 18:43:27
Erich
Hi Wolfgang,
deine Frage lässt einige Dinge offen:
A)
Klar:
Wenn in D "ja" oder "nein" steht, eine 1 in T
Wenn D leer ist, eine 0 in T
Unklar:
Wenn in D etwas anderes als "ja" oder "nein" steht, was dann in T? (In D5 könnte z. B. "ok" oder 4711 stehen.)
B)
"wenn Spalte D leer (bezieht sich aber nur auf Zellen einer befüllten Zeile)"
Was ist eine "befüllte Zeile"? In welcher Zelle müsste etwas stehen?
C)
Bei den bisherigen Vorschlägen hattest du Probleme mit der Bestimmung der Zeile (Variable lngZeile).
Könnte es sein, dass du die Belegung von T mit 0 oder 1 für alle Zeilen haben willst,
bei denen D leer ist oder in D "ja" oder "nein" steht?
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Rückfragen
16.03.2014 18:50:57
Wolfgang
Hallo Erich,
danke auch Dir für die Rückmeldung. Mir ist klar geworden, dass ich die offenen Fragen, die Du zu Recht stellst, so nicht formulieren konnte. Hatte daher schon bei einer Rückantwort an Karin eine "Mustermappe" angehängt. Die Frage, wenn in Spalte D etwas anderes darin steht, hatte ich gar nicht bedacht. Hier sollte die entspr. Zelle in T leer bleiben. Die Belegung in Spalte T mit O oder 1 hatte ich mir tatsächlich für alle befüllten Zeilen (Datensätze) vorgestellt. Nochmals recht herzlichen Dank.
Gruß - Wolfgang

noch ein Code
16.03.2014 18:57:41
Erich
Hi Wolfgang,
das könntest du auch probieren:

Option Explicit
Private Sub Workbook_Open()
Dim lngZeile As Long
With Worksheets("Grunddaten")
For lngZeile = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
Select Case Cells(lngZeile, 4)
Case "Ja", "Nein":   Cells(lngZeile, 20) = 0
Case "":             Cells(lngZeile, 20) = 1
Case Else:           Cells(lngZeile, 20).ClearContents
End Select
Next lngZeile
End With
End Sub
Bearbeitet werden alle Zeilen bis zur letzten Zeile, in der in Spalte A etwas steht
(die "befüllten Zeilen").
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: noch ein Code- Danke Erich!!!
16.03.2014 19:20:20
Wolfgang
Hallo Erich,
herzlichen Dank für Deine erneute Meldung und den Code. Wollte Dir schon gerade die "Hurrameldung" schicken, dass der Code von Karin mein Problem toll gelöst hat, da sah ich bereits Deinen Code. Er läuft auch wunderbar und tadellos. Aufgefriffen hierin ja auch schon Dein Hinweis bzgl. eines anderen Textes, den ich ja nicht einmal bedacht hatte. Hab nochmals recht herzlichen Dank.
Gruß und einen schönen (Rest)-Sonntag noch.
Wolfgang

noch ein Code - korrigiert
16.03.2014 19:01:17
Erich
Hi Wolfgang,
wenn man With verwendet, sollte man auch die Punkte vor Cells hinschreiben...
Sorry - also noch mal:

Option Explicit
Private Sub Workbook_Open()
Dim lngZeile As Long
With Worksheets("Grunddaten")
For lngZeile = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
Select Case .Cells(lngZeile, 4)
Case "Ja", "Nein":   .Cells(lngZeile, 20) = 0
Case "":             .Cells(lngZeile, 20) = 1
Case Else:           .Cells(lngZeile, 20).ClearContents
End Select
Next lngZeile
End With
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
ups - rennt bei mir ohne Punkte
16.03.2014 19:27:31
Wolfgang
Hallo Erich,
was bewirken diese Punkte? - hatte Deinen ersten Code eben direkt hineinkopiert und er rennt auch ohne diese Punkte.
Danke nochmals herzlich und Gruß - Wolfgang

With
16.03.2014 19:45:20
Erich
Hi Wolfgang,
hast du dir die VBA-Hilfe zu With noch nicht angesehen? :-)
Dass das bei dir auch ohne die Pubkte läuft, liegt wohl daran, dass mehr oder weniger zufällig das Blatt
"Grunddaten" beim Öffnen der Mappe aktiv ist.
Wenn ein anderes Blatt das aktive Blatt ist, wird es vielleicht schon knallen... :-)
Wenn so ein Punkt vor Cells oder Row oder ... innerhalb einer With-Klammer steht,
wird vor dem Punkt automatisch das ergänzt, was hinter dem With steht.
Also wird z. B. aus
With Worksheets("Grunddaten")
For lngZeile = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
End With
der Code
For lngZeile = 1 To Worksheets("Grunddaten").Cells(Worksheets("Grunddaten").Rows.Count, 1).End(xlUp).Row
Das With dient der Abkürzung des Codes, trägt aber auch zu einer größeren Ausführungsgeschwindigkeit bei.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: With
17.03.2014 05:50:24
Wolfgang
Hallo Erich,
stimmt, bei mir ist die betreffende Seite direkt als Startseite, so dass es demnach wohl ohne Punkte funktioniert hat. Danke für die Ergänzungen und insbesondere die anschaulichen Hinweise.
Gruß - Wolfgang

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige