Microsoft Excel

Herbers Excel/VBA-Archiv

Laufzeitfehler 9

Betrifft: Laufzeitfehler 9 von: bjoern
Geschrieben am: 22.10.2020 17:56:04

ich wünsche eine wunderschönen guten Abend



ja also das Problem ist


ich lassen den Sheets(a).Name per If mit vergleichen mit den Inhalt einer Zelle

achja die Vollständigkeit Sorry

also zu erst

tabelend = Sheets(1).Cells(8, 4).Value 'da steht das ende der Tabelle drin, als Zahl
       For a = 1 To tabelend

          If Sheets(a).Name = nam Then
                vari = vari + 1

          End If
            
      Next a


bei denn if und spuckt er nun Laufzeitfehler 9 aus

vor 3 Wochen mit der alten Webquelle hatte es aber noch funktioniert

wo ist der Fehler?


ein manuelles Kopieren > Namen ersetzen hat erstmal nix gebacht

bitte nicht so zu böse sein wenn ich die Geflogenheite dieses Forums immer noch nicht kann

Betrifft: AW: Laufzeitfehler 9
von: Hajo_Zi
Geschrieben am: 22.10.2020 18:00:39

die Variable nam ist nicht definiert.

GrußformelHomepage

Betrifft: AW: Laufzeitfehler 9
von: bjoern
Geschrieben am: 22.10.2020 18:08:03

doch ist sie weiter oben, der gesammte dim-Bloch sieht so aus
Dim tabelend As Integer
Dim nam As String
Dim tabzelle
Dim Blatt
Dim blue As Integer
Dim green As Boolean
Dim red As Boolean
also so weit ich das sotiert haben, das Skribt ist relativ alt, aber laut Suche kommt kein weiteres "dim nam" vor

Betrifft: AW: Laufzeitfehler 9
von: Hajo_Zi
Geschrieben am: 22.10.2020 18:40:35

gut ist definiert aber nicht belegt.

Gruß Hajo

Betrifft: AW: Laufzeitfehler 9
von: Daniel
Geschrieben am: 22.10.2020 18:11:45

Hi

Prüfe, welchen Wert a beim Abbruch hat.
Bei a=1 liegt das Problem im Code
Bei a größer 1 haben einige Schleifendurchläufe funktioniert und das Problem liegt an einer anderen Stelle.

Gleiche a und tabelend mal mit der Anzahl der Blätter in der Datei ab.
Vermutlich steht in D8 ein zu großer Wert.

Es ist nicht sinnvoll, hier das Schleifenende über einen Zellwert zu definieren, da man die Anzahl der Blätter abfragen kann:
For a = 1 to Sheets.Count
Einzig sinnvoll wäre der Schleifenendwert in der Zelle, wenn er kleiner sein kann als die Anzahl Blätter weil man die Blätter am Ende ausschließen will.
Aber auch dann sollte man absichern:
For a = 1 to Worksheetfunction.Min(Sheets.Count, tabelend)
Gruß Daniel

Betrifft: AW: Laufzeitfehler 9
von: bjoern
Geschrieben am: 22.10.2020 18:26:00

achja danke
a ist bei 53

nam ist bei "Nikkei" was Seets.Name 2 ist und auch in Tabellenzelle 2,2 steht
dann kann das also nicht stimmen und ist ein Hinweiß auf eine anderen Fehler

den Sheets.Count hatte ich früher mal drin, aber auch irgendein Grund (an den ich mich nicht mehr erinnere) habe ich es wieder zurück geändert
also danke ich werde noch ein bissel weiter suchen
aber der Hinweiß ob a wirklich an dem Punkt ist den es sein soll war wichtig, danke dafür

Betrifft: AW: die Variable "nam" hat keinen Wert!!
von: JoWE
Geschrieben am: 22.10.2020 18:20:15

Hallo Bjoern,

Hajo schrieb "die Variable nam ist nicht definiert" und da hat er recht.
"nam" ist zwar dimensioniert, hat aber, wenn das Makro läuft und bei
'If Sheets(a).Name = nam Then' ankommt keinen Wert!!
Da fehlt irgendwo vorher nam = "Tabelle_nn".

Gruß
Jochen

Beiträge aus dem Excel-Forum zum Thema "Laufzeitfehler 9 "