Supportnet / Forum / Tabellenkalkulation
in VBA eine IF abfrage
Frage
Hallo und Grüzi
Ich sagte es schon und ich sage es immer wieder. DANKE für euer Hilfe, es tut so gut!
Ich habe folgendes Probem. Habe ein Modul das mir alle benötigten DAten in eine Tabelle holt. Möchte nun, das er die Daten nur holt wenn in Zeie K eine J steht.
Hier einmal der VBA
nd wie gesagt er soll die Daten nur holen wenn in Tabelle1 in K ein J steht. Zur Zeit holt er mir auch die sozusagen Nulldaten.
____________________
Option Explicit
Sub zusammenfassenkm()
Dim monat As Integer, maxrow As Long, currow As Long
Application.ScreenUpdating = False
Sheets("Fahrtkosten").Select
Range("B9:M800").ClearContents
For monat = 1 To 1
Sheets("Fahrtkosten").Select
currow = ActiveSheet.Cells(Rows.Count, 9).End(xlUp).Row + 1
Sheets("TB2006").Select
maxrow = ActiveSheet.Cells(Rows.Count, 5).End(xlUp).Row
´Daten von Spalte B(Datum) nach D (Datum)
Sheets("TB2006").Range("B5:B" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("D" & CStr(currow))
´Daten von Spalte L(km Start) nach E (km Start)
Sheets("TB2006").Range("L5:L" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("E" & CStr(currow))
´Daten von Spalte M(km Ende) nach F (km Ende)
Sheets("TB2006").Range("M5:M" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("F" & CStr(currow))
´Daten von Spalte G(Name) nach G (Name)
Sheets("TB2006").Range("G5:G" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("G" & CStr(currow))
´Daten von Spalte N(Abfahrt) nach H (Abfahrt)
Sheets("TB2006").Range("N5:N" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("H" & CStr(currow))
´Daten von Spalte O(Ziel) nach I (Ziel)
Sheets("TB2006").Range("O5:O" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("I" & CStr(currow))
´Daten von Spalte I(Bemerkungen) nach K (Bemerkungen)
Sheets("TB2006").Range("I5:I" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("K" & CStr(currow))
´Daten von Spalte E(Zweck) nach J (Bemerkungen)
Sheets("TB2006").Range("E5:E" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("J" & CStr(currow))
´Daten von Spalte H(Dienst) nach L (Dienst)
Sheets("TB2006").Range("H5:H" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("L" & CStr(currow))
Next
Sheets("Fahrtkosten").Select
Application.ScreenUpdating = True
End Sub
__________________--
DANKE
Antwort 1 von gast76
Option Explicit
Sub zusammenfassenkm()
If Ucase(Shees("Tabelle1").Range("k?").Value)>< "J" then exit Sub
Dim monat As Integer, maxrow As Long, currow As Long
Application.ScreenUpdating = False
Sheets("Fahrtkosten").Select
Range("B9:M800").ClearContents
For monat = 1 To 1
Sheets("Fahrtkosten").Select
currow = ActiveSheet.Cells(Rows.Count, 9).End(xlUp).Row + 1
Sheets("TB2006").Select
maxrow = ActiveSheet.Cells(Rows.Count, 5).End(xlUp).Row
´Daten von Spalte B(Datum) nach D (Datum)
Sheets("TB2006").Range("B5:B" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("D" & CStr(currow))
´Daten von Spalte L(km Start) nach E (km Start)
Sheets("TB2006").Range("L5:L" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("E" & CStr(currow))
´Daten von Spalte M(km Ende) nach F (km Ende)
Sheets("TB2006").Range("M5:M" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("F" & CStr(currow))
´Daten von Spalte G(Name) nach G (Name)
Sheets("TB2006").Range("G5:G" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("G" & CStr(currow))
´Daten von Spalte N(Abfahrt) nach H (Abfahrt)
Sheets("TB2006").Range("N5:N" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("H" & CStr(currow))
´Daten von Spalte O(Ziel) nach I (Ziel)
Sheets("TB2006").Range("O5:O" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("I" & CStr(currow))
´Daten von Spalte I(Bemerkungen) nach K (Bemerkungen)
Sheets("TB2006").Range("I5:I" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("K" & CStr(currow))
´Daten von Spalte E(Zweck) nach J (Bemerkungen)
Sheets("TB2006").Range("E5:E" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("J" & CStr(currow))
´Daten von Spalte H(Dienst) nach L (Dienst)
Sheets("TB2006").Range("H5:H" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("L" & CStr(currow))
Next
Sheets("Fahrtkosten").Select
Application.ScreenUpdating = True
End Sub Bitte
Antwort 2 von CaroS
Hallo MiMa1979,
ich habe ein paar Fragen:
For monat = 1 To 1 ist im Moment etwas unklar, soll das später mal erweitert werden? Wahrscheinlich, ansonsten kannst Du die Schleife weglassen.
Erst löschst Du die Inhalte in B9:M800, dann ermittelst Du in Spalte I (vorsichtshalber?) die nächste freien Zelle bzw. Zeile. Warum nimmst Du nicht gleich die Zeile 9, die Du gerade leer gemacht hast? Könnte da noch was jenseits der 800 sein?
Du arbeitest ja mindestens mit 2 Tabellen: Fahrtkosten und TB2006, in welcher der beiden Tabellen soll denn K das "J" in Spalte stehen?
Du müsstest dann auf jeden Fall die 2. Zeile von gast76 ändern und statt "Tabelle1" den richtigen Tabellennamen angeben.
Meinst Du, dass das "J" in einer (einzigen) bestimmten Zelle in Spalte K stehen soll? Oder soll da irgendetwas zeilenweise passieren, so dass man in jeder Zeile prüfen muss, ob ein "J" in Spalte K steht?
Was bedeutet "Zur Zeit holt er mir auch die sozusagen Nulldaten"?
Außerdem: In der 2. Zeile von gast76 sind 2 kleine Schreibfehler. Das Ungleich >< hat bei mir der VBA-Editor selbstständig korrigiert, das t in Sheets muss man allerdings selbst einfügen.
Und zum Schluss natürlich die Frage: Funktioniert es denn nun richtig?
Gruß,
CaroS
ich habe ein paar Fragen:
Und zum Schluss natürlich die Frage: Funktioniert es denn nun richtig?
Gruß,
CaroS
Antwort 3 von MiMa1979
Hallo ihr! Es ist echt klasse, das ihr hier aushelft! Was wäre das Netz ohne euch!!!
Leider funktioniert der beitrag von gast76 nicht, auch mit den Vorbesserungsvorschlägen von CaroS nicht. Trotzdem Danke!
Aber wo liegt den der Fehler? Bitte um hilfe!
Hier noch mal kurz das Problem.
In Tabelle 1 (TB2006) trage ich meine Tätigkeiten ein. Pro Tätigkeit eine Zeile. Abgefragt werden Datum, Dauer usw, aber auch ob ich dafür das Auto benutzen musste, also ob kilometer angefallen sind. Wenn Ja, dann trage ich das in Spalte J ein und gebe ein "J" an. Wenn nicht dann trage ich dort ein "N" ein.
Nun möchte ich in Tabelle3 (Fahrtkosten) eine Auswertung durch VBA vornehemn. Die soll aber nur dann die Daten der Zeilen übernehmen wenn in Spalte J ein "J" steht.
Wie muss diese IF Formel aussehen. Hier der Code vom Modul ohne if formel:
--------------------------------
Option Explicit
Sub zusammenfassenkm()
Dim monat As Integer, maxrow As Long, currow As Long
Application.ScreenUpdating = False
Sheets("Fahrtkosten").Select
Range("B9:L800").ClearContents
Sheets("Fahrtkosten").Select
currow = ActiveSheet.Cells(Rows.Count, 9).End(xlUp).Row + 1
Sheets("TB2006").Select
maxrow = ActiveSheet.Cells(Rows.Count, 5).End(xlUp).Row
´Daten von Spalte B(Datum) nach D (Datum)
Sheets("TB2006").Range("B5:B" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("D" & CStr(currow))
´Daten von Spalte B(Datum) nach C (Monat)
Sheets("TB2006").Range("B5:B" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("C" & CStr(currow))
´Daten von Spalte K(km Start) nach E (km Start)
Sheets("TB2006").Range("K5:K" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("E" & CStr(currow))
´Daten von Spalte L(km Ende) nach F (km Ende)
Sheets("TB2006").Range("L5:L" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("F" & CStr(currow))
´Daten von Spalte G(Name) nach G (Name)
Sheets("TB2006").Range("G5:G" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("G" & CStr(currow))
´Daten von Spalte M(Abfahrt) nach H (Abfahrt)
Sheets("TB2006").Range("M5:M" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("H" & CStr(currow))
´Daten von Spalte N(Ziel) nach I (Ziel)
Sheets("TB2006").Range("N5:N" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("I" & CStr(currow))
´Daten von Spalte K(Bemerkungen) nach K (Bemerkungen)
Sheets("TB2006").Range("K5:K" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("K" & CStr(currow))
´Daten von Spalte E(Zweck) nach J (Bemerkungen)
Sheets("TB2006").Range("E5:E" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("J" & CStr(currow))
´Daten von Spalte H(Dienst) nach L (Dienst)
Sheets("TB2006").Range("H5:H" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("L" & CStr(currow))
Sheets("Fahrtkosten").Select
Application.ScreenUpdating = True
End Sub
---------------------------------------------------
Vielen DANK!
Leider funktioniert der beitrag von gast76 nicht, auch mit den Vorbesserungsvorschlägen von CaroS nicht. Trotzdem Danke!
Aber wo liegt den der Fehler? Bitte um hilfe!
Hier noch mal kurz das Problem.
In Tabelle 1 (TB2006) trage ich meine Tätigkeiten ein. Pro Tätigkeit eine Zeile. Abgefragt werden Datum, Dauer usw, aber auch ob ich dafür das Auto benutzen musste, also ob kilometer angefallen sind. Wenn Ja, dann trage ich das in Spalte J ein und gebe ein "J" an. Wenn nicht dann trage ich dort ein "N" ein.
Nun möchte ich in Tabelle3 (Fahrtkosten) eine Auswertung durch VBA vornehemn. Die soll aber nur dann die Daten der Zeilen übernehmen wenn in Spalte J ein "J" steht.
Wie muss diese IF Formel aussehen. Hier der Code vom Modul ohne if formel:
--------------------------------
Option Explicit
Sub zusammenfassenkm()
Dim monat As Integer, maxrow As Long, currow As Long
Application.ScreenUpdating = False
Sheets("Fahrtkosten").Select
Range("B9:L800").ClearContents
Sheets("Fahrtkosten").Select
currow = ActiveSheet.Cells(Rows.Count, 9).End(xlUp).Row + 1
Sheets("TB2006").Select
maxrow = ActiveSheet.Cells(Rows.Count, 5).End(xlUp).Row
´Daten von Spalte B(Datum) nach D (Datum)
Sheets("TB2006").Range("B5:B" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("D" & CStr(currow))
´Daten von Spalte B(Datum) nach C (Monat)
Sheets("TB2006").Range("B5:B" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("C" & CStr(currow))
´Daten von Spalte K(km Start) nach E (km Start)
Sheets("TB2006").Range("K5:K" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("E" & CStr(currow))
´Daten von Spalte L(km Ende) nach F (km Ende)
Sheets("TB2006").Range("L5:L" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("F" & CStr(currow))
´Daten von Spalte G(Name) nach G (Name)
Sheets("TB2006").Range("G5:G" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("G" & CStr(currow))
´Daten von Spalte M(Abfahrt) nach H (Abfahrt)
Sheets("TB2006").Range("M5:M" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("H" & CStr(currow))
´Daten von Spalte N(Ziel) nach I (Ziel)
Sheets("TB2006").Range("N5:N" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("I" & CStr(currow))
´Daten von Spalte K(Bemerkungen) nach K (Bemerkungen)
Sheets("TB2006").Range("K5:K" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("K" & CStr(currow))
´Daten von Spalte E(Zweck) nach J (Bemerkungen)
Sheets("TB2006").Range("E5:E" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("J" & CStr(currow))
´Daten von Spalte H(Dienst) nach L (Dienst)
Sheets("TB2006").Range("H5:H" & CStr(maxrow)).Copy _
Destination:=Sheets("Fahrtkosten").Range("L" & CStr(currow))
Sheets("Fahrtkosten").Select
Application.ScreenUpdating = True
End Sub
---------------------------------------------------
Vielen DANK!
Antwort 4 von nighty
hi all :)
die zeile sollte laut hinweis auch eingesetzt werden ,da keine diesbezueglichen angaben vorhanden waren :)
gruss nighty
Range("k?").
die zeile sollte laut hinweis auch eingesetzt werden ,da keine diesbezueglichen angaben vorhanden waren :)
gruss nighty
Range("k?").
Antwort 5 von MiMa1979
Hallo nighty!
Verstehe dich nicht! Was meinst du?
Verstehe dich nicht! Was meinst du?

