Anzeige
Archiv - Navigation
1144to1148
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

Index Fehler

Index Fehler
Pierre
Hallo!
Habe einen sehr merkwürdigen Fehler.
Mittels VBA wird eine andere Excel-Datei aufgerufen und ein Blatt in die aktuelle Datei kopiert.
Danach wird die andere Excel-Datei wieder geschlossen.
Dann werden aus dem neuen Blatt einige Code-Zeilen gelöscht.
Dabei tritt der Fehler "Index außerhalb des gültigen Bereichs" auf.
Merkwürdigerweise tritt der Fehler nur auf, wenn ich die VBA-Entwicklungsumgebung geschlossen habe.
Ist die VBA-Entwicklungsumgebung vor Ausführung geöffnet, funktioniert es reibungslos.
Vielleicht hat einer von dazu eine Idee.
Gruß Pierre

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Ohne Code, keine Hilfe ! (owT)
18.03.2010 14:26:16
Renee

AW: Index Fehler
18.03.2010 14:45:50
Pierre
Hallo!
Sorry hier der Code-Teil, wo der Fehler auftritt, wenn die VBA-Umgebung geschlossen ist.
Function entferneCode1UndButton(WKSName As String)
Dim wks As Worksheet
Dim shp As Shape
Dim VBkomp As Object
Dim i_start As Long
Dim i_anzahl As Integer
Set wks = Sheets(WKSName) 'Tabellenname hier anpassen
On Error GoTo ERRORHANDLER
With ThisWorkbook.VBProject.VBComponents(wks.CodeName).CodeModule
Set VBkomp = Application.VBE.ActiveVBProject.VBComponents(wks.CodeName).CodeModule
i_start = VBkomp.procstartline("Worksheet_SelectionChange", vbext_pk_proc)
i_anzahl = VBkomp.proccountlines("Worksheet_SelectionChange", vbext_pk_proc)
Debug.Print i_start; i_anzahl
.DeleteLines i_start, i_anzahl    'Code aus Tabelle entfernen
End With
For Each shp In wks.Shapes
shp.Delete          'Schaltfläche entfernen
Next
ERRORHANDLER:
If Err.Number  0 Then
If Err.Number = -2147024809 Then 'kein Shape auf Tabelle!
Err.Clear
Resume Next
Else                             'sonstige Fehler
MsgBox "Fehler:" & vbLf & vbLf & Err.Description, vbCritical, "FEHLER"
End If
End If
End Function
Gruß Pierre
Anzeige
AW: Index Fehler
18.03.2010 15:27:43
xr8k2
Hallo Pierre,
in welcher Zeile taucht tritt denn der Fehler auf?
Gruß
xr8k2
PS: ... und wieso ist das denn eine Function und keine Sub?
AW: Index Fehler
18.03.2010 15:49:15
Pierre
Hallo xr8k2!
Hatte es mal aus dem Internet kopiert und angepasst.
Da war es schon eine Funktion.
Habe es halt so gelassen.
Welche Zeile kann ich nicht sagen.
Es kommt ja kein Debugger, nur MSGBOX mit Fehlermeldung und
der VBA-Code der gelöscht werden sollte ist noch da.
Ich vermute, dass es mit "i_start" und "i_anzahl" zusammenhängt.
Möglicherweise sind die beiden Variablen dann 0!
Kann es aber nicht genau sagen.
Aber eben nur wenn die VBA-Entwicklungsumgebung geschlossen ist!
Gruß
Anzeige
AW: Index Fehler
18.03.2010 16:43:16
xr8k2
Hallo Pierre,
deaktivier doch mal den Errorhandler in deinem Code, dann sollte doch die fehlerverursachende Zeile zu ermitteln sein ;-)
Gruß,
xr8k2
AW: Index Fehler
19.03.2010 08:49:32
Pierre
Hallo xr8k2!
Das habe ich natürlich auch schon gemacht.
Dann kommt keine Fehlermeldung und die Code-Zeilen werden auch nicht gelöscht.
Gruß Pierre
AW: Index Fehler
19.03.2010 10:22:52
xr8k2
Hi Pierre,
dann kann ich nur raten (das was ich anhand deines zur Verfügung gestellten Codes testen konnte hab ich getestet und bei mir funktionierts) ...
Prüf mal ob deine Variable "VBkomp" auch wirklich das gewünschte Codemodul enthält und ob demzufolge der korrekte Zeilenbeginn und die korrekte Zeilenanzahl ermitelt wird. Lass dir ggf. mal die Inhalte der Variablen "i_start" und "i_anzahl" zwischendurch in einer MSGBOX anzeigen.
Auch blick ich nicht so ganz durch, wieso du einmal
ThisWorkbook.VBProject.VBComponents(wks.CodeName).CodeModule

und dann einmal
Application.VBE.ActiveVBProject.VBComponents(wks.CodeName).CodeModule
verwendest. Ich schätze du erreichts damit nicht das, was du evtl. erreichen willst ?! Da bedarf es vielleicht mal noch ein paar mehr Informationen.
Mal ein Schuss in´s Blaue:
Function entferneCode1UndButton(WKSName As String)
Dim wks As Worksheet
Dim shp As Shape
Dim VBkomp As Object
Dim i_start As Long
Dim i_anzahl As Integer
Set wks = Sheets(WKSName) 'Tabellenname hier anpassen
On Error GoTo ERRORHANDLER
With ThisWorkbook.VBProject.VBComponents(wks.CodeName).CodeModule
i_start = .procstartline("Worksheet_SelectionChange", vbext_pk_proc)
i_anzahl = .proccountlines("Worksheet_SelectionChange", vbext_pk_proc)
Debug.Print i_start; i_anzahl
.DeleteLines i_start, i_anzahl    'Code aus Tabelle entfernen
End With
For Each shp In wks.Shapes
shp.Delete          'Schaltfläche entfernen
Next
ERRORHANDLER:
If Err.Number  0 Then
If Err.Number = -2147024809 Then 'kein Shape auf Tabelle!
Err.Clear
Resume Next
Else                             'sonstige Fehler
MsgBox "Fehler:" & vbLf & vbLf & Err.Description, vbCritical, "FEHLER"
End If
End If
End Function
Gruß,
xr8k2
Anzeige
AW: Index Fehler
19.03.2010 12:36:37
Pierre
Hallo xr8k2!
Deine Vermutung mit "VBkomp" war völlig richtig.
Habe es mal abgeändert, funktioniert prima.
Wäre ich nicht drauf gekommen, vielen Dank.
Gruß Pierre

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige