Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1832to1836
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 '9':

Laufzeitfehler '9':
06.06.2021 08:52:42
Marc
Hallo zusammen,
ich bekomme einen sogenannten Laufzeitfehler '9'
Index außerhalb des gültigen Bereichs
VBA Code lautet:
Option Explicit

Sub sbLetsStartTheGame()
Do
If Time = "08:45:00" Then 'hier die gewünschte Uhrzeit eintragen, wann es los geht; z Bsp 11:00:00
Sheets("Anzeige").Range("G11").Value = 1
Exit Do
End If
DoEvents
Loop Until Time > "08:45:00" 'hier die selbe Uhrzeit eintragen wie oben
End Sub
Der Fehler bezieht sich auf Sheets("Anzeige").Range("G11").Value = 1
Ich vermute mal dass der Fehler dadurch auftritt, weil ich das Makro aus einer anderen Arbeitsmappe starte und Excel jetzt den kompletten Dateinamen braucht.
Also müsste meiner Meinung nach vor Sheets noch der Dateiname eingefügt werden. Ich weiß leider nicht wie sowas geht.
Der Dateiname lautet "Spielstandanzeige"
Ich hoffe ich habe mich verständlich ausgedrückt.
Gruß Marc

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler '9':
06.06.2021 08:58:27
Nepumuk
Hallo Marc,
beispielsweise so:

WorkBooks("Diemappe.xlsm").WorkSheets("Anzeige").Range("G11").Value = 1
Hier:
If Time = "08:45:00" Then
vergleichst du eine Uhrzeit mit einer Zeichenkette. schlechter Stiel. Besser so:

If Time = TimeValue("08:45:00") Then
Gruß
Nepumuk
AW: Laufzeitfehler '9':
06.06.2021 12:26:08
Marc
Hallo Nepumuk,
erst einmal vielen Dank für Deine Antwort.
Ich habe ein Makro was auch von Hand prima funktioniert.
Nun wollte ich es in meine Hauptdatei so einfügen, dass es über einen Klick auf meinen Button startet.
Geht irgendwie aber nicht.
In meinem Tabellenblatt "Spielbericht" befindet sich der Command-Button.
Dort habe ich ganz unten den Call Aufruf eingefügt.

Private Sub CommandButton1_Click()
Call Unterschriften_ausblenden
Call Unterschriften_einblenden
Call Kreuze_ausblenden
Call Kreuze_einblenden
Call Grafik_Spieler_des_Tages_ausblenden
Call Grafik_Spieler_des_Tages_einblenden
Call Logos_ausblenden
Call Logos_einblenden
Call Button_Ergebnisse_Löschen_ausblenden
Call Button_Ergebnisse_löschen_einblenden
Call Button_Warnhinweis_ausblenden
Call Button_Daten_löschen_ausblenden
Call LeerzeilenLoeschen_2
Call nicht_anwesend_angetreten_eintragen
Call leere_Zellen_sperren
Call leere_Zellen_entsperren
Call sbLetsStartTheGame
End Sub
Das Modul1 aus der angehängten Datei habe ich auch in meine Hauptdatei kopiert.
Jetzt verstehe ich nur nicht, warum das nicht funktioniert.
Hast Du vielleicht eine Idee dazu?
Gruß Marc
https://www.herber.de/bbs/user/146507.xlsm
P.S. meine Hauptdatei ist leider zu groß um sie hier einzufügen.
Anzeige
AW: Laufzeitfehler '9':
06.06.2021 12:36:10
Nepumuk
Hallo Marc,
sorry, aber ich versteh nur Bahnhof.
Gruß
Nepumuk
AW: Laufzeitfehler '9':
06.06.2021 13:56:29
Marc
Hallo Nepumuk,
das hatte ich befürchtet. Geht mir leider genauso.
Gruß Marc
AW: Laufzeitfehler '9':
06.06.2021 14:10:04
Marc
Hallo Nepumuk,
Ich denke Mal das Excel irgendetwas nicht richtig zuordnen oder finden kann.
Deine Antwort (WorkBooks("Diemappe.xlsm").WorkSheets("Anzeige").Range("G11").Value = 1)
habe ich wie folgt abgeändert:
Workbooks("Spielstandanzeige.xlsm").Worksheets("Anzeige").Range("G11").Value = 1
Trotzdem bleibt ein (neuer) Fehler.
Jetzt: Laufzeitfehler '1004':
Die Select-Methode des Range-Objektes konnte nicht ausgeführt werden.
?
Gruß Marc
Anzeige
AW: Laufzeitfehler '9':
06.06.2021 14:36:38
Daniel
Hast du irgendwas selektiert?
Lass das weg, das braucht man nicht.
Wenn du unbedingt selektieren willst, musst du in einzelschritten erst die Mappe, dann das Blatt und zum Schluss den Zellbereich selektieren.
Gruß Daniel
AW: Laufzeitfehler '9':
06.06.2021 15:32:05
Marc
Also langsam werde ich irre.
Jetzt fehlt ein End If.
Option Explicit

Private Sub worksheet_change(ByVal Target As Excel.Range)
Application.ScreenUpdating = False
If Intersect(Target, Range("G11")) Is Nothing Then
Exit Sub
Else
If Target.Value = "1" Then
Range("A1:M10").Select
ActiveCell.FormulaR1C1 = _
"='[SG Kolping Remscheid lll -.xlsm]Spielbericht'!R26C41"
Range("A16:F50,H16:M50").Select
Range("H16").Activate
Selection.ClearContents
Range("A16:F50,H16:M50").Select
Range("H16").Activate
With Selection
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True
End With
Range("A16:F50").Select
ActiveCell.FormulaR1C1 = _
"='[SG Kolping Remscheid lll -.xlsm]Spielbericht'!R30C41"
Range("H16:M50").Select
ActiveCell.FormulaR1C1 = _
"='[SG Kolping Remscheid lll -.xlsm]Spielbericht'!R30C44"
Range("G16:G50").Select
End If
End Sub
Gruß Marc
Anzeige
AW: Laufzeitfehler '9':
06.06.2021 15:42:23
Daniel
Ja du hast 2x IF und nur 1x End If
Jedes If braucht ein End If.
Wo das hin muss, solltest du aber selber wissen.
Das du immer noch selektiert, ist dein Code lang und unübersichtlich
Bereinige erstmal den ganze unnötigen Kram aus der Recorderaufzeichnung
Dh aus

Range("A16:F50,H16:M50").Select
Range("H16").Activate
Selection.ClearContents
Machst du

Range("A16:F50,H16:M50").ClearContents
Aus

Range("H16:M50").Select
ActiveCell.FormulaR1C1 = _
"='[SG Kolping Remscheid lll -.xlsm]Spielbericht'!R30C44"
Dann

Range("H16:M50").FormulaR1C1 = "='[SG Kolping Remscheid lll -.xlsm]Spielbericht'!R30C44"
Wenn du dann noch die Rückungen richtig setzt, dh nach jedem IF oder With einen Tabsprung nach rechts und das dazugehörige End dann wieder einen Tabsprung nach links, dann solltest du dich auch in deinem Code zurecht finden.
Gruß Daniel
Anzeige
AW: Laufzeitfehler '9':
06.06.2021 15:42:40
Marc
Und wieder:
Laufzeitfehler '1004':
Diesmal bei Range("A1:M10").Select
Die Select-Methode des Range-Objektes konnte nicht ausgeführt werden.
Option Explicit

Private Sub worksheet_change(ByVal Target As Excel.Range)
Application.ScreenUpdating = False
If Intersect(Target, Range("G11")) Is Nothing Then
Exit Sub
Else
If Target.Value = "1" Then
Range("A1:M10").Select
ActiveCell.FormulaR1C1 = _
"='[SG Kolping Remscheid lll -.xlsm]Spielbericht'!R26C41"
Range("A16:F50,H16:M50").Select
Range("H16").Activate
Selection.ClearContents
Range("A16:F50,H16:M50").Select
Range("H16").Activate
With Selection
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True
End With
End If
Range("A16:F50").Select
ActiveCell.FormulaR1C1 = _
"='[SG Kolping Remscheid lll -.xlsm]Spielbericht'!R30C41"
Range("H16:M50").Select
ActiveCell.FormulaR1C1 = _
"='[SG Kolping Remscheid lll -.xlsm]Spielbericht'!R30C44"
Range("G16:G50").Select
End If
End Sub
Jetzt blicke ich gar nicht mehr durch........
Gruß Marc
Anzeige
AW: Laufzeitfehler '9':
06.06.2021 15:53:59
Daniel
Hi
Wenn das der vollständige Code ist, kanns eigentlich nur daran liegen, dass der Blattschutz aktiv ist und du diese Zellen nicht selektieren darfst.
Wobei sich hier die Frage stellt, warum du erst den ganzen Bereich selektiert, wenn du die Formel doch nur in eine Zelle schreibst?
Gruß Daniel
AW: Laufzeitfehler '9':
06.06.2021 16:10:14
Daniel
Solltest du da noch wie in den anderen Beiträgen beschrieben noch Workbook und Sheet selektieren, musst du beachten, dass der Code in einem Tabellenblattmodul steht und nicht in einem allgemeinen Modul.
Denn dann referenziert ein Range ohne Tabellenblattangabe davor nicht mehr auf das zuvor selektierte Tabellenblattmodul, sondern immer auf das Tabellenblatt des Moduls.
Wenn du weiterhin auf vollständige Referenzierung verzichten und selektieren willst, darfst du nach einem Wechsel des Tabellenblatts nicht mehr nur Range(...).Select schreiben, sondern musst ActiveSheet.Range(...).Select verwenden.
Gruß Daniel
Anzeige
AW: Laufzeitfehler '9':
06.06.2021 16:28:01
Marc
Was ich nicht begreife ist folgendes:
Das Makro läuft von Hand einwandfrei durch.
Modul1: Option Explicit
Sub sbLetsStartTheGame()
Do
If Time = "16:21:00" Then 'hier die gewünschte Uhrzeit eintragen, wann es los geht; z Bsp 11:00:00
Workbooks("Spielstandanzeige.xlsm").Worksheets("Anzeige").Range("G11").Value = 1
Exit Do
End If
DoEvents
Loop Until Time > "16:21:00" 'hier die selbe Uhrzeit eintragen wie oben
End Sub Makro an sich:
Option Explicit

Private Sub worksheet_change(ByVal Target As Excel.Range)
Application.ScreenUpdating = False
If Intersect(Target, Range("G11")) Is Nothing Then
Exit Sub
Else
If Target.Value = "1" Then
Range("A16:F50,H16:M50").Select
Range("H16").Activate
Selection.ClearContents
Range("A16:F50,H16:M50").Select
Range("H16").Activate
With Selection
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True
End With
End If
Range("A16:F50").Select
ActiveCell.FormulaR1C1 = _
"='[SG Kolping Remscheid lll -.xlsm]Spielbericht'!R30C41"
Range("H16:M50").Select
ActiveCell.FormulaR1C1 = _
"='[SG Kolping Remscheid lll -.xlsm]Spielbericht'!R30C44"
Range("A1:M10").Select
ActiveCell.FormulaR1C1 = _
"='[SG Kolping Remscheid lll -.xlsm]Spielbericht'!R26C41"
Range("G16:G50").Select
End If
End Sub
Verschiebe ich jetzt Modul1 in meine andere Arbeitsmappe und rufe das Makro auf, geht es nicht.
Das ist mir irgendwie zu hoch.
Entweder da fehlt etwas oder ich habe da prinzipiell einen Denkfehler drin.
Gruß Marc
Anzeige
AW: Laufzeitfehler '9':
06.06.2021 18:01:09
Daniel
Ist auch für mich schwer zu verstehen, was du da machst.
Du erklärst das nur sehr bröckenhaft.
Ohne die Dateien und den Sinn dahinter zu kennen, ist nur schwer zu verstehen, was du machst.
Bzw, hat nichts mit deinem Fehler zu tun, aber wenn du kostenfreie Hilfe erwartet, dann solltest du es deinen Helfern so einfach wie möglich machen.
Dh erkläre möglichst genau und überlege dir, was ein potentieller Helfer von deinem Projekt wissen kann und was nicht.
Des weiteren solltest du die Codes so kurz und Übersichtlichkeit wie möglich halten, bspw in dem du auf Select und Activate verzichtet, und immer vollständig referenziert.
Mehr dazu kannst du auch hier nachlesen:
https://www.online-excel.de/excel/singsel_vba.php?f=78
Noch ein Tipp: wenn du willst, dass ein bestimmtes Makro zu einer bestimmten Uhrzeit einmal ausgeführt wird, dann schaue die mal den Befehl Applications.ontime an.
Ist vielleicht besser als deine Schleife.
Gruß Daniel
Anzeige
AW: Laufzeitfehler '9':
06.06.2021 16:30:39
Marc
Was ich nicht begreife ist folgendes:
Das Makro läuft von Hand einwandfrei durch.
Modul1: Option Explicit
Sub sbLetsStartTheGame()
Do
If Time = "16:21:00" Then 'hier die gewünschte Uhrzeit eintragen, wann es los geht; z Bsp 11:00:00
Workbooks("Spielstandanzeige.xlsm").Worksheets("Anzeige").Range("G11").Value = 1
Exit Do
End If
DoEvents
Loop Until Time > "16:21:00" 'hier die selbe Uhrzeit eintragen wie oben
End Sub Makro an sich:
Option Explicit

Private Sub worksheet_change(ByVal Target As Excel.Range)
Application.ScreenUpdating = False
If Intersect(Target, Range("G11")) Is Nothing Then
Exit Sub
Else
If Target.Value = "1" Then
Range("A16:F50,H16:M50").Select
Range("H16").Activate
Selection.ClearContents
Range("A16:F50,H16:M50").Select
Range("H16").Activate
With Selection
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True
End With
End If
Range("A16:F50").Select
ActiveCell.FormulaR1C1 = _
"='[SG Kolping Remscheid lll -.xlsm]Spielbericht'!R30C41"
Range("H16:M50").Select
ActiveCell.FormulaR1C1 = _
"='[SG Kolping Remscheid lll -.xlsm]Spielbericht'!R30C44"
Range("A1:M10").Select
ActiveCell.FormulaR1C1 = _
"='[SG Kolping Remscheid lll -.xlsm]Spielbericht'!R26C41"
Range("G16:G50").Select
End If
End Sub
Verschiebe ich jetzt Modul1 in meine andere Arbeitsmappe und rufe das Makro mit Call sbLetsStartTheGame über meinen Command-Button auf, geht es nicht.
Das ist mir irgendwie zu hoch.
Entweder da fehlt etwas oder ich habe da prinzipiell einen Denkfehler drin.
Gruß Marc
Anzeige
AW: Laufzeitfehler '9':
06.06.2021 17:21:54
Marc
Danke an alle.
Problem nach 3 Tagen gelöst......
Gruß marc

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige