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

Schleife um variable Werte zu befüllen

Schleife um variable Werte zu befüllen
24.04.2018 20:08:12
PurgerKiko
Hallo zusammen,
ich nutze VBA im Geschäft aber würde mich als Amateur bezeichnen.
Nun würde ich gern im privaten Bereich etwas programmieren was ich nicht hinbekomme.
Ich habe eine Excel-Datei in der ich die Spalte D markiere und einen bestimmten Text suche "Kartenzahlung" (dieser kommt öfters vor in der Spalte D). Wenn der Code den Text findet, soll er sich in Spalte C den Zellinhalt merken und in Spalte F und H genauso.
Dann soll er den nächsten Wert "Kartenzahlung" suchen und wieder das gleiche merken.
Ich habe dafür die Variablen "Valutadatum()", "Begünstigter()" und "Betrag() deklariert.
Nun hänge ich an der Schleife und bekomme sie einfach nicht hin.
Ihr bekommt das bestimmt hin....vlt. hat jemand Lust mir nen Codeabschnitt zu schicken der mir weiterhilft.
Mein Code bis zur Schleife sieht so aus:
Option Explicit
Sub KontoauszugBefüllung()
Dim DDMMYYYY As Date
Dim TagDD As Variant
Dim MonatDD As Variant
Dim JahrDD As Variant
Dim DateiDatum As Variant
Dim Answer As Variant
Dim DateiNameKontoauszug As Variant
Dim dateiname As String
Dim filename As Variant
Dim x As Variant
Dim i As Integer
Dim iRow As Integer: iRow = 1
Dim ValutaDatum() As Date
Dim Begünstigter() As String
Dim Betrag() As Double
Dim Zelle As Variant
Dim lngR As Variant
Dim wb As Workbook
Dim pfad As String, dateien
Dim datei
Dim strPath As String, strFileName As String
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
'Über den heutigen Tag die Bearbeitung starten ' _
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
DDMMYYYY = Format(DateSerial(Year(Now()), Month(Now()), 1), "DD.MM.YYYY")
TagDD = Mid(DDMMYYYY, 1, 2)
MonatDD = Mid(DDMMYYYY, 4, 2)
JahrDD = Mid(DDMMYYYY, 7, 4)
MonatDD = MonatDD - 1
Select Case MonatDD
Case 1: MonatDD = "01"
Case 2: MonatDD = "02"
Case 3: MonatDD = "03"
Case 4: MonatDD = "04"
Case 5: MonatDD = "05"
Case 6: MonatDD = "06"
Case 7: MonatDD = "07"
Case 8: MonatDD = "08"
Case 9: MonatDD = "09"
End Select
DateiDatum = MonatDD & "." & JahrDD
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
'Umwandlung einer csv Datei in eine xlsx Datei ' _
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
'pfad = "H:\privat\Privatno\VBA-privat\" ' auf \ am Ende achten 'dateien = Array(DateiDatum & "- _
_
7800832") ' Dateinamen ohne Endung 'Application.ScreenUpdating = False
'    For Each datei In dateien
'    Set wb = Workbooks.Open(pfad & datei & ".csv", local:=True)
'    wb.SaveAs pfad & datei & ".xlsx", FileFormat:=xlOpenXMLWorkbook
'    wb.Close
'    Next
'    Set wb = Nothing
'    Application.ScreenUpdating = True
''Die umgewandelte CSV.Datei wird nicht mehr benötigt und wird deshalb gelöscht 'Kill "H:\ _
privat\Privatno\VBA-privat\" & DateiDatum & "-XXXXX" & ".csv"
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
'Öffnen der Datei in xlsx
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Nochmal:
'Öffnen der Datei mit möglicher Fehlerbearbeitung DateiNameKontoauszug = DateiDatum & "-XXXX. _
xlsx"
dateiname = "H:\privat\Privatno\VBA-privat\" & DateiNameKontoauszug If Dir(dateiname, vbNormal)  _
_
= "" Then
MsgBox "Der Kalender wurde nicht gefunden.", vbCritical, "Information"
Answer = MsgBox("Wurde Problem behoben?", vbQuestion + vbYesNo,
"Information")
If Answer = vbYes Then
GoTo Nochmal
End If
If Answer = vbNo Then
MsgBox "Bearbeitung wird abgebrochen"
Exit Sub
End If
Else
Workbooks.Open filename:=(dateiname)
filename = ActiveWorkbook.Name
End If
x = Application.WorksheetFunction.CountIf(Range("D:D"), "KARTENZAHLUNG")
'Suche nach Werten
Range("D:D").Select
For Each Zelle In Selection
If Zelle = "KARTENZAHLUNG" Then
Zelle.Select
lngR = ActiveCell.Row + 1
Zelle.Offset(0, -1).Select
ValutaDatum(x) = ActiveCell
Begünstigter(x) = Zelle.Offset(0, 2).Value
Betrag(x) = Zelle.Offset(0, 5).Value
Exit For
End If
Next
End Sub

Vielen Dank schonmal.
PurgerKiko

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleife um variable Werte zu befüllen
25.04.2018 09:10:39
Robert
Hallo PurgerKiko,
nachstehender Code prüft die Spalte D bis zum letzten Eintrag auf den Text "Kartenzahlung" und befüllt die Variablen mit den Zellinhalten der Spalten D, F und G der entsprechenden Zeile.
Die befüllten Variablen habe ich dann als Beispiel für eine weitere Bearbeitung ab der Zelle K1 wieder in die Tabelle eingetragen.
Sub KontoauszugBefüllung()
Dim i As Integer
Dim ValutaDatum() As Date
Dim Begünstigter() As String
Dim Betrag() As Double
Dim Zelle As Range
Dim lZ As Long
'letzte befüllte Zelle in Spalte D
lZ = Range("D" & Rows.Count).End(xlUp).Row
i = 0
'Spalte D bis zur letzten befüllten Zelle auf "Kartenzahlung" überprüfen
For Each Zelle In Range("D1:D" & lZ)
If Zelle = "Kartenzahlung" Then
'Variablendimension erweitern und mit aktuellen Daten befüllen
ReDim Preserve ValutaDatum(i)
ReDim Preserve Begünstigter(i)
ReDim Preserve Betrag(i)
ValutaDatum(i) = Zelle.Offset(0, -1)
Begünstigter(i) = Zelle.Offset(0, 2)
Betrag(i) = Zelle.Offset(0, 3)
i = i + 1
End If
Next
'die befüllten Variablen im Zellbereich K1:M..  eintragen
Range("K1:K" & UBound(ValutaDatum) + 1) = Application.WorksheetFunction.Transpose(ValutaDatum)
Range("L1:L" & UBound(Begünstigter) + 1) =Application.WorksheetFunction.Transpose(Begünstigter)
Range("M1:M" & UBound(Betrag) + 1) = Application.WorksheetFunction.Transpose(Betrag)
End Sub
Gruß
Robert
Anzeige
AW: Schleife um variable Werte zu befüllen
25.04.2018 14:38:46
PurgerKiko
Hallo Robert,
Code habe ich ausprobiert und er macht genau was ich will.
Du rettest mir damit meine Nerven und mindestens für 1 Monat meine Abende (so lange hätte ich bestimmt gebraucht um das hinzubekommen).
Vielen herzlichen Dank
Viele Grüße
PurgerKiko
Gerne und Danke für die Rückmeldung (owT)
25.04.2018 18:58:16
Robert

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige