Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1888to1892
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

ElseIf funktioniert nicht richtig

ElseIf funktioniert nicht richtig
16.07.2022 15:27:45
Henry
Hallo liebes Forum,.
ich benötige mal wieder eure Hilfe.
Ich habe folgenden Code geschrieben, der Daten aus dem Tabellenblatt "Buchungen" auf andere Tabellenblätter ("Kostenstellenbuchung", "PSP-Buchungen") überträgt.
Ohne die ElseIf Anweisung werden die Daten korrekt in das Sheet "Kostenstellenbuchung" geschrieben.
Wenn ich allerdings die ElseIf Anweisung hinzufüge, werden die PSP-Daten zwar korrekt in das Blatt "PSP-Buchungen" geschrieben, allerdings werden dann nur noch vereinzelt Zeilen in das Sheet "Kostenstellenbuchungen" geschrieben.
Könnt ihr mir hier weiterhelfen?
Code:

Sub Datenübertragung()
Dim lngZeile As Long
Dim lngZeileMax As Long
Dim Zähler As Long
'Worksheets("Buchungen").Activate
With Worksheets("Buchungen")
Zähler = 5
lngZeileMax = .Cells(.Rows.Count, 1).End(xlUp).Row
For lngZeile = 3 To lngZeileMax
If .Cells(lngZeile, 2).Value = "K" Then
Worksheets("Kostenstellenbuchung").Cells(Zähler, 1).Value = Cells(lngZeile, 1).Value
Worksheets("Kostenstellenbuchung").Cells(Zähler, 4).Value = Cells(lngZeile, 3).Value
Worksheets("Kostenstellenbuchung").Cells(Zähler, 5).Value = Format(Cells(lngZeile, 4).Value, "mm")
Worksheets("Kostenstellenbuchung").Cells(Zähler, 6).Value = Format(Cells(lngZeile, 4).Value, "yyyy")
Worksheets("Kostenstellenbuchung").Cells(Zähler, 7).Value = Cells(lngZeile, 5).Value
Worksheets("Kostenstellenbuchung").Cells(Zähler, 2).Value = Application.WorksheetFunction.VLookup(Worksheets("Kostenstellenbuchung").Cells(Zähler, 1), Worksheets("Kostenstellenstammdaten").Range("A:C"), 2, False)
Worksheets("Kostenstellenbuchung").Cells(Zähler, 3).Value = Application.WorksheetFunction.VLookup(Worksheets("Kostenstellenbuchung").Cells(Zähler, 1), Worksheets("Kostenstellenstammdaten").Range("A:C"), 3, False)
ElseIf .Cells(lngZeile, 2).Value = "P" Then
Worksheets("PSP-Buchungen").Cells(Zähler, 1).Value = Cells(lngZeile, 1).Value
Worksheets("PSP-Buchungen").Cells(Zähler, 4).Value = Cells(lngZeile, 3).Value
Worksheets("PSP-Buchungen").Cells(Zähler, 5).Value = Format(Cells(lngZeile, 4).Value, "mm")
Worksheets("PSP-Buchungen").Cells(Zähler, 6).Value = Format(Cells(lngZeile, 4).Value, "yyyy")
Worksheets("PSP-Buchungen").Cells(Zähler, 7).Value = Cells(lngZeile, 5).Value
Worksheets("PSP-Buchungen").Cells(Zähler, 2).Value = Application.WorksheetFunction.VLookup(Worksheets("PSP-Buchungen").Cells(Zähler, 1), Worksheets("PSP-Elemente Stammdaten").Range("A:C"), 2, False)
Worksheets("PSP-Buchungen").Cells(Zähler, 3).Value = Application.WorksheetFunction.VLookup(Worksheets("PSP-Buchungen").Cells(Zähler, 1), Worksheets("PSP-Elemente Stammdaten").Range("A:C"), 3, False)
Zähler = Zähler + 1
End If
Next lngZeile
End With
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ElseIf funktioniert nicht richtig
16.07.2022 15:56:08
ralf_b
die zeile sollte auch in den if zweig.

Zähler = Zähler + 1

AW: ElseIf funktioniert nicht richtig
16.07.2022 16:07:28
Henry
Das habe ich auch schon probiert, dann werden zwar die Daten vollständig übertragen, allerdings nicht mehr direkt untereinander.
AW: ElseIf funktioniert nicht richtig
16.07.2022 16:09:14
ralf_b
oh ja du hast recht, du brauchst für jedes Blatt einen eigenen Zähler.
AW: ElseIf funktioniert nicht richtig
16.07.2022 16:12:49
Henry
Damit klappt es. Vielen Dank.
Kann man das noch irgendwie einfacher lösen?
AW: ElseIf funktioniert nicht richtig
16.07.2022 17:39:12
ralf_b
mit ner parametrisierten Funktion. aber in der Funktion werden die Werte aus der aktiven Tabelle genommen. Sonst müßte ich das Blatt Buchungen auch noch mit übergeben oder es dort fix vorraussetzen. der Code ist ungetestet.

Sub Datenübertragung()
Dim lngZeile As Long
Dim shName As String
With Worksheets("Buchungen")
For lngZeile = 3 To .Cells(.Rows.Count, 1).End(xlUp).Row
Select Case .Cells(lngZeile, 2).Value
Case "K": fn_wertesetzen "Kostenstellenbuchung", lngZeile, "Kostenstellenstammdaten"
Case "P": fn_wertesetzen "PSP-Buchungen", lngZeile, "PSP-Elemente Stammdaten"
End Select
Next
End With
End Sub
Function fn_wertesetzen(sName As String, lngZeile As Long, sName2 As String)
Dim Zähler As Long
With Worksheets(sName)
Zähler = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Cells(Zähler, 1).Value = Cells(lngZeile, 1).Value
.Cells(Zähler, 4).Value = Cells(lngZeile, 3).Value
.Cells(Zähler, 5).Value = Format(Cells(lngZeile, 4).Value, "mm")
.Cells(Zähler, 6).Value = Format(Cells(lngZeile, 4).Value, "yyyy")
.Cells(Zähler, 7).Value = Cells(lngZeile, 5).Value
.Cells(Zähler, 2).Value = Application.WorksheetFunction.VLookup(Worksheets(sName).Cells(Zähler, 1), Worksheets(sName2).Range("A:C"), 2, False)
.Cells(Zähler, 3).Value = Application.WorksheetFunction.VLookup(Worksheets(sName).Cells(Zähler, 1), Worksheets(sName2).Range("A:C"), 3, False)
End With
End Function

Anzeige
AW: ElseIf funktioniert nicht richtig
17.07.2022 17:08:48
Henry
Hallo,
entschuldige bitte, dass ich mich jetzt erst melde.
Der Code funktioniert einwandfrei. Vielen Dank.
Leider kenne ich mich mit Funktionen noch nicht gut aus.
Ich verstehe nicht woher die Funktion die spezifischen Tabellenblätter erkennt.
Außerdem verstehe ich nicht wofür die Variable "Dim shName As String" deklariert wird.
Wärst du so nett und würdest mir das erklären?
Ich würde gerne dazulernen.
Viele Grüße
Henry
AW: ElseIf funktioniert nicht richtig
17.07.2022 18:11:08
ralf_b
Dim shName As String ist ein Rest von bevor es die Funktion fn_wertesetzen gab. VBA Code entwickelt sich beim Programmieren. Da bleibt auch mal was übrig. In diesem Fall unschädlich für die Funktionalität.
was eine parametrisierte Funktion bzw. eine Funktion mit Parameterübergabe ist und wie diese arbeitet, kannst du locker (selbst) recherchieren. Ich gebe ungern Nachhilfe in Basiswissen wenn das alles schon didaktisch aufbereitet im Netz auf Interessenten wartet.
Anzeige

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige