Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1672to1676
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

Laufzeitfehler 13

Laufzeitfehler 13
06.02.2019 14:10:26
Teom
Guten Tag, habe hier folgenden Code der mir leider immer den Laufzeitfehler 13 angibt. Konnte _ das Problem nicht beheben. ( Code wurde nur angepasst, nicht selbst erstellt)

Sub Daten_nach_Extern()
Dim wksQ As Worksheet
Dim wkbZ As Workbook
Dim wksZ As Worksheet
Dim ZeileZ As Long
Dim strPfad As String
Dim strDatei As String
Set wksQ = ActiveSheet
'Verzeichnis der Zieldatei
strPfad = "C:\Users\Private\Desktop\ImportDateien\TestOrdner"
'Name der Zieldatei
strDatei = "ImportSheet1Ziel.xlsx"
If Dir(strPfad & "\" & strDatei) = "" Then
MsgBox "Datei " & vbLf & strPfad & "\" & strDatei & vbLf & "nicht gefunden"
Else
'//Makrobremsen fängt an zu arbeiten
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
.EnableEvents = False
End With
'//Zieldatei öffnen
Set wkbZ = Application.Workbooks.Open(Filename:=strPfad & "\" & strDatei)
Set wksZ = wkbZ.Worksheets("Sheet1")
With wksZ
'nächste Zeile ohne Daten in Spalte A.
Zeile_Z = .Cells(.Rows.Count, 1).End(xlUp).Rows + 1
'alternativ nächste nicht benutzte Zeile
Zeile_Z = .UsedRange.Row + .UsedRange.Rows.Count
'Daten übertragen ohne Bedingungen
Spalte = 2 '= Spalte A
.Cells(ZeileZ, Spalte) = wksQ.Range("C18").Value
'// erst Auditsheet, dann Ziel angeben
'Spalte = 3: .Cells(ZeileZ, Spalte).Value = "Yes"
Spalte = 4: .Cells(ZeileZ, Spalte) = wksQ.Range("C9").Value
Spalte = 5: .Cells(ZeileZ, Spalte) = wksQ.Range("C17").Value
'.usw.
End With
'Makrobremsen zurücksetzen
With Application
.ScreenUpdating = True
.Calculation = StatusCac
.EnableEvents = True
End With
End If
End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 13
06.02.2019 14:18:12
Werner
Hallo,
und in welcher Zeile des Codes wird denn der Fehler ausgelöst?
Was auffällt:
1. Variablen nicht alle Deklariert
Hier
.Cells(ZeileZ, Spalte) = wksQ.Range("C18").Value

benutzt du dir Variable ZeileZ.
Die wird aber nirgendwo im Code befüllt, ist also 0 und eine Zeile 0 gibt es nicht.
Gruß Werner
AW: Laufzeitfehler 13
06.02.2019 14:26:32
Teom
Wird die nicht mit
ZeileZ = .Cells(.Rows.Count, 1).End(xlUp).Rows + 1
befüllt?
Hab jetzt mal aus Zeile_Z durch ZeileZ korrigiert. Gleicher Fehler, leider wird mir auch nicht angezeigt in welcher Zeile sich der Fehler befindet.
Anzeige
AW: Laufzeitfehler 13
06.02.2019 14:28:15
Werner
Hallo,
woher soll ich das wissen, ohne deine Datei zu kennen. Lade doch mal die Mappe hoch in der dieser Fehler auftritt, ggf. Daten anonymisieren.
Gruß Werner
AW: Laufzeitfehler 13
06.02.2019 14:33:00
Teom
Hey,
aus Datenschutz Gründen kann ich leider nicht die ganze Mappe hochladen, lediglich den gesamten VBA Code, den ich bereits hier angegeben habe.
Wahrsagen kann hier nicht helfen...
06.02.2019 14:46:37
EtoPHG
Teom,
Wenn die fehlerhafte Code-Zeile nicht angezeigt wird, könnte sich der Code in einer Userform befinden. Dann hilft ev. Debuggen: ein STOP Befehl an den Anfang der Routine setzen und mit F8 Step-by Step debuggen. Nur auf Grund des Codes den Fehler zu eruieren wird praktisch unmöglich, da eine Typen-Unverträglichkeit oft von Daten der Mappe verursacht wird.
In deinem Code hat es verwirrende Kommentare, z.B Spalte A wird als 2 (Spalte B) gesetzt.
Gruess Hansueli
Anzeige
AW: Laufzeitfehler 13
06.02.2019 14:49:37
Werner
Hallo,
da ist ein s und das gehört da nicht hin
Zeile_Z = .Cells(.Rows.Count, 1).End(xlUp).Rows + 1

so
Zeile_Z = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
Und das hier ist Nonsens und keine Alternative
'nächste Zeile ohne Daten in Spalte A.
Zeile_Z = .Cells(.Rows.Count, 1).End(xlUp).Rows +
'alternativ nächste nicht benutzte Zeile
Zeile_Z = .UsedRange.Row + .UsedRange.Rows.Count

Du ermittelst zunächst Zeile_Z über .Rows.Count
Zeile_Z hat dann einen Wert, der dann aber durch Zeile_Z = .UsedRange überschrieben wird.
Du ermittelst also immer die erste freie Zeile über UsedRange
Gruß Werner
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige