810 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo Excelfreunde,

habe aus diesem Forum schon ein paar Makros miteinander zusammenklamüsert, nun stehe ich aber vor einem Problem.

Ich habe eine Mappe mit einer Tabelle, aus der ich Daten per Makro in eine andere Mappe transportiere. Bisher klappte dies auch. Nun dachte ich, das Makro über eine Userform zu starten und siehe da, die Zielmappe wird zwar angesprochen, aber es werden keine Daten mehr transportiert. Was ist falsch an diesem Makro ?

Private Sub CommandButton2_Click()
Dim IntEingabe As Integer
Dim lRow As Long
Dim sFile As String

On Error GoTo fehler
IntEingabe = InputBox("Bitte zu kopierende Zeile auswählen ! (z.B. 2)", "Kopiervorgang")

With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
sFile = "C:\Test.xls"
If Dir(sFile) = "" Then
MsgBox "Testdatei wurde nicht gefunden !", vbCritical, "Warnung"
Exit Sub
End If
End With

Select Case IntEingabe
Case 2 To 100

Application.EnableEvents = False
Workbooks.Open Filename:=sFile
Application.EnableEvents = True
Worksheets("Übersicht").Unprotect Password:=""
With Worksheets("Übersicht")
Application.ScreenUpdating = True
If WorksheetFunction.CountBlank(Rows(IntEingabe)) < 256 Then
lRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
Range("A" & IntEingabe & ":X" & IntEingabe).Copy
.Cells(lRow, 1).PasteSpecial Paste:=xlValues
End If
Worksheets("Übersicht").Protect Password:=""
ActiveWorkbook.Close savechanges:=True
Application.ScreenUpdating = False
End With
Range("A" & IntEingabe & ":X" & IntEingabe).ClearContents
Case Else
MsgBox "Es wurde eine falsche Zeile ausgewählt !", vbInformation + vbOKOnly, "Hinweis"
End Select
Exit Sub
fehler:
MsgBox "Falsche Eingabe oder Abbruch", vbCritical + vbOKOnly, "Fehler !"
On Error GoTo 0
End Sub

PS: ich bin ein Neuling in VBA

Bitte helft mir !

Viktor

1 Antwort

0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Viktor,

wenn die andere Arbeitsmappe geöffnet wird, ist sie die aktive und mit der Zeile
Range("A" & IntEingabe & ":X" & IntEingabe).Copy

wird sich auf die aktive Tabelle bezogen. Versuche es mal auf diesem Weg:
ThisWorkbook.Worksheets("Übersicht").Range("A" & IntEingabe & ":X" & IntEingabe).Copy

Bis später,
Karin
...