Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Lesefehler 9

Frage Microsoft Microsoft Office

Mitglied: HackerX

HackerX (Level 2) - Jetzt verbinden

04.06.2007, aktualisiert 05.06.2007, 7353 Aufrufe, 12 Kommentare

Mahlzeit,

als ein Kollege im Excel 2003 eine Tabelle speichern wollte, kam eine Fehlermeldung:


Microsoft Visual Basic

Laufzeitfehler '9':

Index außerhalb des gültigen Bereichs

Fortfahren Beenden Debuggen Hilfe



nun wollte ich mal wissen woran das liegen könnte und was ich dagegn machen kann? Ich hab schon mal probiert die Datei unter einem anderen Namen zu speichern da kam auch dieser Fehler Excel hat es dann aber trozdem gespeichert.

Vielen Dank für Antworten

Mit freundlichen Grüßen

PS: Das Betriebssystem ist Windows XP
Mitglied: HackerX
04.06.2007 um 14:36 Uhr
Ich hab mir die Datei gerade noch mal ins Netzwerk gelegt und von meinem Rechner probiert da kommt genau der gleiche Fehler

Mit freundlichen Grüßen
Bitte warten ..
Mitglied: bastla
04.06.2007 um 19:36 Uhr
Hallo HackerX!

Hört sich nach einer VBA-Fehlermeldung wie etwa beim versuchten Zugriff auf ein inzwischen umbenanntes Tabellenblatt durch ein Autostart-Makro an.

Schau mal mit Alt-F11 in den VBA-Editor und dort per Doppelklick auf "Diese Arbeitsmappe" (links oben unter "Projekt - VBAProjekt"), ob ein "Private Sub Workbook_Open()" existiert. Eine weitere Möglichkeit wäre ein "Sub auto_open()" in einem Modul.

Grüße
bastla
Bitte warten ..
Mitglied: HackerX
05.06.2007 um 07:56 Uhr
Guten morgen und Danke für die Antwort. Kann es sein das es auch durch diese Zeile hervorgerufen wird:


Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)


weil Private Sub Workbook_Open() hab ich so jetzt nicht gesehen, aber die Zeile die ich oben eingefügt hab stand bei ThisWorkbook30 gleich ganz oben.

Was kann ich machen um den Laufzeitfehler wegzubekommen?

Mit freundlichen Grüßen
Bitte warten ..
Mitglied: bastla
05.06.2007 um 08:20 Uhr
Hallo HackerX!

Wenn ich "speichern" von "öffnen" unterscheiden könnte, hätte ich Deine Frage oben gleich richtig interpretiert ...

Ja, der Fehler wird mit größter Wahrscheinlichkeit im von Dir angegebenen Sub zu finden sein, wobei es neben dem genannten Beispiel "nicht (mehr) existente Tabelle" noch mehrere Möglichkeiten für einen "Index außerhalb des gültigen Bereichs" gibt - am Besten, Du stellst einmal den Code herein.

Grüße
bastla
Bitte warten ..
Mitglied: HackerX
05.06.2007 um 09:09 Uhr
Hier ist der Quellcode von dem Sub:


Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim SheetNow, ErsteLeereSp As Double, ErsteLeereZ As Double, LetzteLeereSp As Double, LetzteLeereZ As Double
Dim ZeileNow As Double, SpalteNow As Double, x As Double
Set ShKapa = ThisWorkbook.Worksheets("Kapa")
Set ShPPS = ThisWorkbook.Worksheets("PPS")
Set ShPara = ThisWorkbook.Worksheets("Parameter")
' Datenbereich wieder korrekt setzen
Application.ScreenUpdating = False
Application.EnableEvents = False
SpaltenBestimmen
SheetNow = ActiveSheet.Name
ZeileNow = ActiveCell.Row
SpalteNow = ActiveCell.Column
ShKapa.Select
arrTemp = ShKapa.Range("Datenbereich").CurrentRegion
ErsteLeereZ = UBound(arrTemp, 1) + ShKapa.Range("Datenbereich").Row
LetzteLeereZ = ShKapa.Cells.SpecialCells(xlLastCell).Row
ErsteLeereSp = UBound(arrTemp, 2) + 1
LetzteLeereSp = ShKapa.Cells.SpecialCells(xlLastCell).Column
If LetzteLeereZ > ErsteLeereZ Then ShKapa.Range(Rows(ErsteLeereZ), Rows(LetzteLeereZ)).Delete
If LetzteLeereSp > ErsteLeereSp Then ShKapa.Range(Columns(ErsteLeereSp), Columns(LetzteLeereSp)).Delete
Sheets(SheetNow).Activate
Sheets(SheetNow).Cells(ZeileNow, SpalteNow).Activate
Application.ScreenUpdating = True
Application.EnableEvents = True
For x = 2 To UBound(arrTemp, 1)
If arrTemp(x, Kunde) = "Kapa" Then
ActiveWorkbook.Names.Add Name:="OrgStart", RefersTo:="=KAPA!$A$" & _
x + ShKapa.Range("Datenbereich").Row - 1
Exit For
End If
Next x
arrTemp = ShPara.Range("LogListe").CurrentRegion
For x = 35 To 3 Step -1
arrTemp(x, 1) = arrTemp(x - 1, 1)
arrTemp(x, 2) = arrTemp(x - 1, 2)
Next x
arrTemp(2, 1) = UCase(getUserInitials)
arrTemp(2, 2) = Now()
ShPara.Range("LogListe").CurrentRegion = arrTemp

'Erweiterung Sicherungskonzept

Dim fs, afs, file, FDatum As String, Pfad As String, i As Integer
Pfad = ThisWorkbook.Path
ChDir Pfad
Set fs = CreateObject("Scripting.FileSystemObject")
If fs.FileExists("Sicherungskopie von " & Replace(ThisWorkbook.Name, ".xls", "") & ".xlk") Then
Set file = fs.GetFile("Sicherungskopie von " & Replace(ThisWorkbook.Name, ".xls", "") & ".xlk")
FDatum = Format(file.DateLastModified, "YYYY_MM_DD_HH_MM_SS")
Name ("Sicherungskopie von " & Replace(ThisWorkbook.Name, ".xls", "") & ".xlk") As FDatum & "_" & UCase(getUserInitials) & "_" & ("Sicherungskopie von " & Replace(ThisWorkbook.Name, ".xls", "") & ".xlk")
End If

Set afs = Application.FileSearch
With afs
.LookIn = Pfad
.Filename = "*.xlk"
If .Execute(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending) > 0 Then
For i = 1 To .FoundFiles.Count - 13
file = fs.GetFileName(.FoundFiles(i))
' If Val(Left(file, 4)) < Year(Now()) _
' Or Val(Mid(file, 6, 2)) < Month(Now()) _
' Or Val(Mid(file, 9, 2)) < Day(Now()) Then
Kill file
' End If
Next i
End If
End With
End Sub


Mit freundlichen Grüßen
Bitte warten ..
Mitglied: bastla
05.06.2007 um 09:46 Uhr
Hallo HackerX!

Was Du überprüfen könntest:
  • Gibt es die Tabellen mit den Namen "Kapa", "PPS" und "Parameter"?
  • In der Tabelle "Kapa" muss ein benannter Bereich "Datenbereich" existieren, in "Parameter" ein Bereich "LogListe".

Wenn die oben beschriebenen Bedingungen erfüllt sind, solltest Du (da auch noch ein nicht dargestelltes "Sub SpaltenBestimmen" aufgerufen sowie eine vorerst unbekannte Variable "Kunde" verwendet wird und auch die Struktur der Tabellen von Bedeutung ist) einfach einmal beim Auftauchen der Fehlermeldung "Debuggen" wählen - dann wird die Programmzeile angezeigt, in der der Fehler aufgetreten ist. Damit kann dann gezielter Ursachenforschung betrieben werden.

Grüße
bastla
Bitte warten ..
Mitglied: HackerX
05.06.2007 um 11:27 Uhr
Also ich hab gerade mal nachgeschaut die Tabellen gibt es und wenn ich nach dem speichern auf debuggen klicke bleibt der Debugger an folgender Stelle stehen (Fett):

arrTemp = ShPara.Range("LogListe").CurrentRegion
For x = 35 To 3 Step -1

arrTemp(x, 1) = arrTemp(x - 1, 1)

arrTemp(x, 2) = arrTemp(x - 1, 2)
Next x
arrTemp(2, 1) = UCase(getUserInitials)
arrTemp(2, 2) = Now()
ShPara.Range("LogListe").CurrentRegion = arrTemp

Mit freundlichen Grüßen
Bitte warten ..
Mitglied: bastla
05.06.2007 um 11:34 Uhr
Hallo HackerX!

Das sieht so aus, als ob der Bereich "LogListe" nicht genug Zeilen umfassen würde (müssten mindestens 35 sein - Kontrolle über Menü "Einfügen / Namen / Definieren").

Grüße
bastla
Bitte warten ..
Mitglied: HackerX
05.06.2007 um 12:22 Uhr
LogListe bezieht sich bei mir auf eine Zelle in der einfach nur KZ steht. Kann es daran liegen das das nicht geht?

Mit freundlichen Grüßen und Danke noch mal
Bitte warten ..
Mitglied: bastla
05.06.2007 um 12:45 Uhr
Hallo HackerX!

Eine Zeile ist zu wenig. Ich kann Dir zum Programmteil
01.
arrTemp = ShPara.Range("LogListe").CurrentRegion 
02.
For x = 35 To 3 Step -1 
03.
arrTemp(x, 1) = arrTemp(x - 1, 1) 
04.
arrTemp(x, 2) = arrTemp(x - 1, 2) 
05.
Next x 
06.
arrTemp(2, 1) = UCase(getUserInitials) 
07.
arrTemp(2, 2) = Now() 
08.
ShPara.Range("LogListe").CurrentRegion = arrTemp
noch eine kurze Beschreibung liefern, aber vermutlich dann auch nicht mehr beitragen ...

Zweck des Codes oben ist es, die Daten ab der zweiten Zeile der "Logliste" nach unten zu verschieben (wobei der älteste Eintrag in der 35. Zeile entfernt wird), damit in der zweiten Zeile eine Userkennung und der Speicherzeitpunkt (Datum und Uhrzeit) in 2 Spalten nebeneinander eingetragen werden können - im Normallfall sollten also (vermutlich unter einer Überschrift in der ersten Zeile) 34 Datensätze zur Dokumentation des Speicherns zu finden sein.

Grüße
bastla
Bitte warten ..
Mitglied: HackerX
05.06.2007 um 13:28 Uhr
Danke für die Hilfe ich werd mal sehen ob es mir weiter hilft aber jetzt hab ich wenigstens einen Ansatz.

Mit freundlichen Grüßen
Bitte warten ..
Mitglied: bastla
05.06.2007 um 19:16 Uhr
Hallo HackerX!

Noch eine Berichtigung als Nachtrag: Der Bereich "LogListe" selbst muss nicht zumindest 35 Zeilen umfassen (sondern kann sehr wohl nur aus einer einzelnen Zelle bestehen), aber er muss zu einem zusammenhängenden Zellbereich mit mindestens 35 Zeilen gehören.

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

Tipp von agowa338 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...