Habe mal wieder ein Problem - wahrscheinlich ein richtig peinliches Grundlagenproblem - und nachdem ich nun zwei...Korrektur: drei Stunden versucht habe, es zu lösen - ohne Erfolg - dachte ich mir, wende ich mich mal an die Profis.
Folgendes liegt an:
Zwei Dateien. Jeweils Bilanzwerte.
Die Datei Bilanz enthält u.a. das Blatt "Bilanz nach §266 HGB WT-1". Dieses kommt aus unserer Software und enthält Bilanzdaten pro Kostenart (KSA) für das Gesamtjahr und die einzelnen Perioden.
Die Datei TestMakroBilanz enthält ein Blatt, das normalerweise in einer größeren Datei enthalten ist. In diese sollen die Werte aus der Datei Bilanz hereinkopiert werden.
Mit copy + paste geht das aber nicht einfach, da das Blatt aus der Datei TestMakroBilanz wesentlich mehr KSA enthält. Hintergrund: Die Software spuckt für das Jahr immer nur bebuchte KSA aus und nicht jene, die auch in der Vergangenheit, also der nicht betrachteten Periode, bebucht worden.
Soweit klar?
Ich möchte in der Regel den vergangenen Monat kopieren + einfügen.
Was ich nun versucht habe per Makro zu hinterlegen:
1) Jahr eingeben via Inputbox
2) Monat eingeben via Inputbox
dadurch die Spalte finden, deren Werte kopiert und in TestMakroBilanz eingefügt werden sollen (Finde Wert Jahr in Zeile 1 und gehe den Monatswert nach rechts)
3) Spalte in der zu kopierenden Datei finden (können auch mehrere Jahre rausgezogen werden)
4) Spalte in der einzufügenden Datei finden (enthält hier im Bsp. mehr Jahre und deshalb Spalten)
5) Spalte A (=KSA) aus Datei Bilanz nutzen, um dadurch das Pendant in der anderen Datei zu finden, analog summewenn oder index(vergleich)
6) ist die KSA nicht in der einzufügenden Datei --> Msgbox mit Fehlermeldung und weiter machen
7) Zum Schluss die Info: Bin fertig.
Die eine Datei:
https://www.herber.de/bbs/user/152550.xlsx
die andere:
https://www.herber.de/bbs/user/152551.xlsm
Nicht wundern, die Werte ergeben natürlich keinen Sinn mehr.
Mein Code lautet nun:
Sub Bilanz_Daten_ziehen()
Dim EingabeJahr As Integer
Dim EingabeMonat As Integer
Dim SpalteCopy As Integer
Dim SpaltePaste As Integer
Dim ZeileCopy As Integer
Dim ZeilePaste As Integer
Dim KSA As String
Dim Wert As Integer
Do Until EingabeJahr ""
EingabeJahr = Application.InputBox("Bitte geben Sie das Jahr ein" & vbCr & "Format: 20xx", "Jahr", "Bsp.: 2022", Type:=1)
Loop
Do Until EingabeMonat > 0 And EingabeMonat
Wahrscheinlich wieder viel zu kompliziert und fehleranfällig - vllt hat ja jemand ne bessere Variante.Bei mir hakt es gerade bei dem Punkt: If Not SpalteCopy Is Nothing Then
"Fehler beim Kompilieren. Typen unverträglich."
Wahrscheinlich irgendwas mit Range oder Wert aber was anderes muss her.... .
Keine Ahnung. Habe schon total viel versucht.
Vllt. weiß ja jemand eine andere Lösung...habe ich das bereits gesagt?
Sollten Fragen offen sein, bitte genau und narrensicher stellen - sonst sind "falsche" Antworten vorprogrammiert...Erfahrungswert.
Lieben Dank und lieben Gruß,
Sabi