Supportnet Computer
Planet of Tech

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

  • 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!

    Antwort 4 von nighty

    hi all :)

    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?

    Ich möchte kostenlos eine Frage an die Mitglieder stellen:


    Ähnliche Themen:


    Suche in allen vorhandenen Beiträgen: