Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1904to1908
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Fehler bei code

Fehler bei code
07.11.2022 16:47:35
Eric
Hallo zusammen
Ich probiere mithilfe eines Makros in der Zieldatei Daten aus der Datendatei zu importieren. Dabei muss ich in der Datendatei die Daten anhand des Headers auswählen. Ich habe es bereits geschafft ein Makro zu machen dass die nötigen Daten auswählt. Beim rüberkopieren gibt es mir jedoch einen Fehler (Subscript außerhalb des Bereichs (Fehler 9)). könnt ihr mir erklären was ich falsch gemacht habe?
Danke bereits im Vorraus!
Mein Code:

Sub DataImport()
Dim ws As Worksheet
Dim hostCellRange As Range, cfind As Range
Dim lRow As Long, lCol As Long
Set ws = Workbooks("2022-07-01_Dispo-Daten (version 1).xlsb").Worksheets("Selected")
With ws
.AutoFilterMode = False
With .Range("A6", .Cells(6, .Columns.Count).End(xlToLeft))
.AutoFilter Field:=3, Criteria1:="HP"
.AutoFilter Field:=246, Criteria1:="glo"
Set cfind = .Find(What:="Option Number", LookIn:=xlValues, lookat:=xlWhole)
If Not cfind Is Nothing Then
'~~> Find the column number
lCol = cfind.Column
'~~> Find the last row in that column
lRow = ws.Range(Split(Cells(, lCol).Address, "$")(1) & ws.Rows.Count).End(xlUp).Row
'~~> Create the range
Set hostCellRange = .Range(cfind.Offset(1, 0), cfind.Offset(lRow - 1, 0))
Debug.Print hostCellRange.Address
hostCellRange.Copy Workbooks("Global_Risk_Client_List_2.0_13.08.2022.xlsm").Sheets("UWWBData").Range("B2")
End If
End With
End With
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler bei code
07.11.2022 17:05:30
GerdL
Moin Eric,
da dur dir mit der Fehlerquelle sicher bist, probier mal:
Call hostCellRange.Copy Thisworkbook.Sheets(1).Range("B2"))
Gruß Gerd
AW: Fehler bei code
07.11.2022 21:35:13
Yal
Hallo Eric,
in der Datei, die Du uns geliefert hast, gibt es kein Feld 246.
Fehler 9 erscheint, wenn Du einen benannte Element aus einer Auflistung aufrufst, den es nicht gibt.
Es kann Workbooks("meinWB.xlsx"), wenn diese nicht geöffnet ist,
oder Worksheets("lalala"), nachdem diese zu "lululu" umbenannt wurde. Usw.
Anders gesagt: da die ungeschnittenen Dateien nicht im Netz gehören, musst Du die Fehler leider selber isolieren.
Setze dazu Variablen:

Sub DataImport()
Dim ws As Worksheet
Dim hostCellRange As Range
Dim cfind As Range
Dim lRow As Long
Dim wb2, ws2
Set ws = Workbooks("2022-07-01_Dispo-Daten (version 1).xlsb").Worksheets("Selected")
ws.AutoFilterMode = False
With ws.Range("A6", .Cells(6, .Columns.Count).End(xlToLeft))
.AutoFilter Field:=3, Criteria1:="HP"
.AutoFilter Field:=246, Criteria1:="glo"
Set cfind = .Find(What:="Option Number", LookIn:=xlValues, lookat:=xlWhole)
If Not cfind Is Nothing Then
'Find the last row in that column
lRow = ws.Cells(Rows.Count, cfind.Column).End(xlUp).Row
'Create the range
Set hostCellRange = .Range(cfind.Offset(1, 0), cfind.Offset(lRow - 1, 0))
Debug.Print hostCellRange.Address
Set wb2 = Workbooks("Global_Risk_Client_List_2.0_13.08.2022.xlsm") 'hier könnte ein Fehler 9 entstehen
Set ws2 = wb2.Sheets("UWWBData") 'hier könnte ein Fehler 9 entstehen
hostCellRange.Copy ws2.Range("B2")
End If
End With
End Sub
Ich würde ohnehin diese Kopiererei nicht mit VBA sondern mit Power Query machen, der Low Code/No Code Importer/Transformer von Excel: Menü "Daten", "Neue Abfrage", "Aus Arbeitsmappe", ... der Rest ist spielen und lernen.
Siehe https://excelhero.de/power-query/power-query-ganz-einfach-erklaert

VG
Yal
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige