Code stürzt manchmal in VBA ab

Code stürzt manchmal in VBA ab

Ich habe einen Code. Wenn ich in einer Zelle einen Excel-Arbeitsmappenpfad eingebe und auf eine Schaltfläche klicke, wird die Arbeitsmappe geöffnet und die Daten der aktuellen Arbeitsmappe aus B2 werden in die neu geöffnete Arbeitsmappe kopiert und eingefügt. Der Code funktioniert gut. Aber das Problem ist, dass der Code manchmal abstürzt und einen Fehler ausgibt. Was das Problem ist, kann ich nicht verstehen. Wenn der Code nicht in Ordnung ist, wird er nie perfekt ausgeführt. Aber in meinem Fall wird er manchmal gut ausgeführt und gibt manchmal einen Fehler aus. Bitte helfen Sie. Hier ist der Fehler -

Auswahlmethode der Bereichsklasse ist fehlgeschlagen

Und hier ist der Code -

Private Sub CommandButton1_Click()

Dim pathCell As String

pathCell = Range("locationPath").Value


Dim wbTarget As Workbook 'workbook where the data is to be pasted
Dim wbThis As Workbook 'workbook from where the data is to be copied

'set to the current active workbook (the source book)
Set wbThis = ActiveWorkbook

'copy the range from source book
wbThis.Worksheets(1).Range("B1").Copy

'open a workbook that has same name as the sheet name
Set wbTarget = Workbooks.Open(pathCell)

'Select the target cell
wbTarget.Worksheets(2).Range("B1").Select

'paste the data on the target book
wbTarget.Worksheets(2).Range("B1").PasteSpecial Paste:=xlPasteAll

'clear any thing on clipboard to maximize available memory
Application.CutCopyMode = False

Worksheets(1).Activate


End Sub

jede Hilfe wäre willkommen!

Antwort1

Ich nehme an, dass es in dieser Zeile fehlschlägt, da es die einzige ist, die enthält.Select

'Select the target cell
wbTarget.Worksheets(2).Range("B1").Select
  • Diese Zeile schlägt mit dem angezeigten Fehler fehl, wenn sie zum Zeitpunkt der Ausführung Worksheets(2)nicht das aktive Blatt ist. Sie müssen das Arbeitsblatt und den Bereich in separaten Codezeilen auswählen. Das ist wahrscheinlich der Grund, warum Ihr Makro nur zeitweise Fehler verursacht. Wahrscheinlich navigieren Sie manchmal von diesem Arbeitsblatt weg, bevor Sie die Arbeitsmappe schließen, und manchmal nicht.

  • Jedoch, das scheint, soweit es den Einfügevorgang betrifft, keinen Zweck zu erfüllen, und das Einfügen sollte genauso gut funktionieren, wenn Sie die Zeile löschen.

    • Ihre nachfolgende Codezeile qualifiziert die Zielzelle vollständig.
'paste the data on the target book
wbTarget.Worksheets(2).Range("B1").PasteSpecial Paste:=xlPasteAll

Wenn diese Zelle aus irgendeinem Grund unbedingt ausgewählt sein muss, wenn das Makro abgeschlossen ist, wählen Sie zuerst das Arbeitsblatt und dann die Zelle aus.

Siehe auchSo vermeiden Sie die Verwendung von „Select“ in Excel VBA auf unserer Schwesterseite Stackoverflow.

verwandte Informationen