VBA Excel: Fehler bei der Bereichsauswahl während der Iteration der Arbeitsmappe


1

Ich habe mehrere Dateien in einem Ordner mit der Spalte "Teilenummer", aber nicht alle befinden sich in derselben Spaltennummer. Die Liste muss auch nicht in derselben Zeile beginnen.

Ich suche also zuerst nach der Zeichenfolge "Teilenummer" und kopiere dann ihre Adresse als Anfang des Bereichs, den ich kopieren möchte.

Die Spalte "Teilenummer" enthält einige Leerzeichen in einigen Elementen, sodass ich die letzte Zeile nicht mit .End (xlDown) durchsuchen konnte.

Also benutze ich die Spalte "Menge", um die letzte Zeile zu finden und die Zeilennummer zu kopieren.

Ich habe die Zelle, in der der Bereich beginnt, die Spalten- und die Zeilennummer, in der der Bereich enden soll. Ich erhalte jedoch den Fehler "Anwendungsdefinierter oder objektdefinierter Fehler".

Das Makro ist noch nicht fertig, aber ich kann nicht weitermachen, bis ich das gelöst habe. Das habe ich bekommen:

Option Explicit

Sub mergeworkbooks()


Dim path As String
Dim filename As String
Dim wbk As Workbook
Dim wks As Worksheet
Dim lastrow As Long
Dim lastcolumn As Long
Dim rangestart As String
Dim lastcol As Long
Dim rangefinish As String
Dim activesht As String


path = "D:\RubenBK\TEST\"
filename = Dir(path)

       Do While filename <> ""

              Set wbk = Workbooks.Open(path & filename)
              For Each wks In Worksheets
                    If Not wks.UsedRange.Find("PART NUMBER", lookat:=xlPart, MatchCase:=False) Is Nothing Then
                    wks.UsedRange.Find("PART NUMBER", lookat:=xlPart, MatchCase:=False).Activate
                    rangestart = wks.UsedRange.Find("PART NUMBER", lookat:=xlPart, MatchCase:=False).Address
                    lastcolumn = wks.UsedRange.Find("PART NUMBER", lookat:=xlPart, MatchCase:=False).Column
                    lastrow = wks.UsedRange.Find("qty", lookat:=xlPart, MatchCase:=False).End(xlDown).row
                    rangefinish = Cells(lastrow, lastcolumn).Address(xlA1)
                    activesht = ActiveSheet.Name

                    'AND HERE IS WHERE I GET THE ERROR, THE Range("rangestart: rangefinish") PART:

                    wbk.Sheets(activesht).Range("rangestart: rangefinish").Copy Destination:=ThisWorkbook.Sheets("Sheet1").Range("A10")
                    End If
                    wbk.Close
              Next
        filename = Dir
        Loop


End Sub

Irgendein Vorschlag?


Was sind rangestart und rangefinish definiert als wann kommst du auf den fehler? Das .address ist höchstwahrscheinlich aufhören zu arbeiten. Auch die range("var1: var2") Möglicherweise liegt ein Fehler vor
Raystafarian

Sie sind wie folgt definiert: $ D $ 6 und $ D & amp; 10. gtwebb vorschlag hat einwandfrei funktioniert
Ruben

Antworten:


1

Dein Problem ist, dass du dein hast Rangestart und rangefinish eingewickelt in die Anführungszeichen.

Versuchen Sie, sie außerhalb der Anführungszeichen zu verschieben, und es sollte funktionieren.

wbk.Sheets(activesht).Range(rangestart & ":" & rangefinish).Copy
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.