1.1k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo ihr VBA Experte,

ich habe ein kleines Problem bei meinem Code und zwar : Der code löscht die vorhandenen Daten in Tabelle "XXX L" und kopiert neue darauf.(der überschreibt die alten). d.h. in Code kommt der niemals zu der ELSE-Anweisung, weil er A2 immer vorher leer MACHT Sad. Versuche seit Tagen diesen Fehler zu beheben aber keinen Erfolg Sad . Hat einer Ahnung? DANKE


Hier ist der Code


Public Sub transferdata()
Dim wksSource As Worksheet, wksTarget As Worksheet
Dim rngTarget As Range


Dim HeutigesDatum_nd As Date
Dim AktuellerMonat_nd, AktuellesJahr_nd As Integer
Dim c, ZusammensetzungDateiname_nd, f As String
Dim Dateiname_nd As String

HeutigesDatum_nd = Date - 1
AktuellerMonat_nd = Month(HeutigesDatum_nd)
AktuellesJahr_nd = Year(HeutigesDatum_nd)
Dateiname_nd = AktuellerMonat_nd & "-" & AktuellesJahr_nd

Set wksSource = ActiveSheet

Workbooks.Open Filename:="c:\users\XXXXX\desktop\" & Dateiname_nd & " XXXXXX.xlsx"

Set wksTarget = Worksheets("XXX L")
If IsEmpty(wksTarget.Range("A2")) Then

Msgbox "A2 ist leer" (Nur für Test-Zwecke)

' Man bekommt immer diese Meldung auch wenn vor eine Minute die Daten in A2 gefüllt wurden

Set rngTarget = wksTarget.Range("A2")
Else
Set rngTarget = wksTarget.Cells(10, 11).End(xlDown).Row + 1
End If

Msgbox "A2 ist nicht leer"

wksSource.Range("A2:H10").Copy rngTarget

End Sub


-----------

Ich hoffe dass einer mir helfen kann...

lg

3 Antworten

0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo Namenloser,

steht denn vor dem Kopieren in der neu geöffneten Datei in Zelle A2 etwas? Der Copybefehl kommt ja erst viel später, somit hat da ja erst mal nichts mit dem Kopieren zu tun.

Dann noch eine Frage: Was willst Du mit derr Zeile

Set rngTarget = wksTarget.Cells(10, 11).End(xlDown).Row + 1erreichen? Du deklarierst die Variable "rngTarget " als Range, das was dahinter kommt, beschreibt aber keinen Range-Bereich. Das wird unweigerlich in einem Fehler enden.

MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von
Hallo Coros,

erstmal Danke für deine Rückmeldung. Mein Name steht oben in der Ecke "Nadeem". Also bin nicht Namenloser :)

Es ist folgendes :

1- An jedem ersten des Monats (z.B 01.12.2010) ist die Datei neue und damit A2 leer. Die Daten werden beginnend AB A2 eingefügt.
(Dieser Teil macht er richtig)

2- Ab dem zweiten Tag des Monats spricht 02.12.2010 sollte er in A2 gehen, da merkt er dass die Zelle A2 nicht leer ist. geht dann in der ersten leere Zelle der Spalte A und fügt da die Daten ein.
(Dieser Teil macht er NICHT richtig, wenn ich Code schrittweise ausfürhre, dann siehe ich dass der Code die alten Daten (spricht Daten von 01.12.2010) LÖSCHT :( . Das hat zur Folge dass Code A2 mmer LEER findet und fügt immer da die neue Daten ein, die alten sind dann weg .

Könnte ich dir erklären können, was da los ist??

Mit der Zeile,
Set rngTarget = wksTarget.Cells(10, 11).End(xlDown).Row + 1

umgeformt :

Set rngTarget = wksTarget.Cells(1, 1).End(xlDown).Row + 1

soll der Code die erste Zelle ausgehend von Spalte A & Zeile 1 ermitteln.

Danke für deine Hilfe, bin sehr verzweifelt, da keiner die Aufgabe hinkriegt. Ich müss aber morgen diese Lösung schon auf der Arbeit andwenden. TOTAL PANIK

lg

Nadeem
0 Punkte
Beantwortet von
sorry oliver

ich sollte lieber Oliver geschrieben haben statt coros.

lg
...