Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1956to1960
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

Fehler-Nr. 9 Index außerhalb des gültigen Bereichs

Fehler-Nr. 9 Index außerhalb des gültigen Bereichs
28.12.2023 15:02:32
Peer
Hallo zusammen.

Ich sitze so seit Tagen am Problem und probiere alles Mögliche durch, um den Grund für die oben genannte Fehlermeldung zu ergründen.
Ich habe mehrere Monatsblätter, bei denen ich für jeden Kalendertag Einträge einfüge. Dabei habe ich auch eine Spalte "Bemerkungen".
Für die Eingabe nutze ich eine UF mit einigen Steuerelementen, wie TextBoxen und Dropdowns...
Dabei ist auch eine Textbox "Bemerkungen", die mehrzeilig sein soll. Dabei habe ich in den Eigenschaften
  • EnterKeyBehavior = True
    MultiLine = True
    WordWarp = True


  • gesetzt.
    Mit Schließen der UF werden alle Einträge in die jeweiligen Zellen der aktiven Zeile geschrieben.

    Ich habe ein Sub, dass von Josef Ehrensberger stammt (Vielen Dank dafür nochmals), mit dem ich die Einträge exportiere und bei Bedarf wieder importiere.
    Export
    Sub exportValuesToText(control As IRibbonControl)
    

    Dim vntFile As Variant
    Dim wks As Worksheet
    Dim rng As Range
    Dim ff As Integer

    On Error GoTo Fehler

    vntFile = Application.GetSaveAsFilename("Werte " & ActiveWorkbook.Worksheets("Gesamtstunden").Cells(25, 2) & ".txt", "Text Files (*.txt), *.txt")
    If vntFile > False Then
    ff = FreeFile
    Open vntFile For Output As #ff

    For Each wks In ActiveWorkbook.Worksheets

    For Each rng In wks.UsedRange.Cells
    If rng.Locked = False And rng.Formula > "" Then
    Print #ff, wks.Name & ";" & rng.Address(0, 0) & ";" & rng.Formula
    End If
    Next

    Next
    Close #ff
    End If
    Fehler:
    With Err
    Select Case .Number
    Case 0 'alles OK
    Case Else
    MsgBox "Fehler-Nr. " & .Number & vbLf & .Description
    Close
    End Select
    End With
    Set rng = Nothing
    Set wks = Nothing

    End Sub

    Import
    Sub importValuesFromText(control As IRibbonControl)
    
    Dim strFile As String, strTmp As String
    Dim ff As Integer, wsheet As Worksheet
    On Error GoTo Fehler
    strFile = Application.GetOpenFilename("Text Dateien (*.txt),*.txt")

    For Each wsheet In ActiveWorkbook.Sheets
    wsheet.Unprotect
    Next wsheet

    If strFile > CStr(False) Then
    ff = FreeFile
    Open strFile For Input As #ff
    Do While Not EOF(ff)
    Line Input #ff, strTmp
    With Worksheets(Split(strTmp, ";")(0)).Range(Split(strTmp, ";")(1))
    .Formula = Split(strTmp, ";")(2)
    End With
    Loop
    Close #ff
    End If
    Fehler:
    With Err
    Select Case .Number
    Case 0 'alles OK
    Case Else
    MsgBox "Fehler-Nr. " & .Number & vbLf & .Description
    Close
    End Select
    End With
    End Sub

    Genau beim Import kommt die Fehlermeldung.
    Ich habe nun auch die Spalte "Bemerkungen" nachträglich als Text formatiert und unter "Ausrichtung" den Textumbruch einmal aktiviert oder auch deaktiviert. Alles ohne Erfolg.

    Leider kann ich die aktuelle Datei wegen ihrer Größe nicht hochladen. Selbst wenn ich sie auf das Nötigste reduziere, ist sie immer noch zu groß,.
    Ich würde gern mehr Informationen bieten und hochladen, ich habe aber dazu noch keine Idee, wie ich das mache.

    Vielleicht hat jemand auch so eine Lösung oder einen Tipp hierzu.

    Besten Dank für jeden Tipp und/oder Hilfe.

    Peer

    21
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Fehler-Nr. 9 Index außerhalb des gültigen Bereichs
    28.12.2023 15:18:22
    GerdL
    Moin Peer,

    ich glaube der Variablen strTemp hast du keinen Wert zugewiesen.

    Gruß Gerd
    AW: Fehler-Nr. 9 Index außerhalb des gültigen Bereichs
    28.12.2023 16:24:21
    Piet
    Hallo

    Datei verkleinern ist das kleinste Problem. Erstelle eine Kopie Datei, lösche in allen Tabellen die Zeilen ab Zeile 50-100. Das sollte reichen.
    Es geht ja darum den Tabellenaufbau und die UserForm in Aktion zu sehen. Die Daten nach unten sind uninteressant.

    mfg Piet
    AW: Fehler-Nr. 9 Index außerhalb des gültigen Bereichs
    28.12.2023 17:01:17
    Daniel
    Hi
    In welcher Programmzeile kommt der Fehler?
    Gruß Daniel
    AW: Fehler-Nr. 9 Index außerhalb des gültigen Bereichs
    28.12.2023 17:09:26
    Peer
    Hallo Daniel.
    Da kommt darauf an, wie viele Daten du exportierst.
    Spätestens nach der Zeile mit einem mehrzeiligen Eintrag werden alle weiteren Einträge nicht mehr importiert.
    Anzeige
    AW: Fehler-Nr. 9 Index außerhalb des gültigen Bereichs
    28.12.2023 20:02:06
    daniel
    Hi
    bevor du den Multiline-Textboxtext exportierst, solltest du ihn einzeilig machen und die Zeilenumbruchzeichen durch ein normales Zeichen ersetzen (möglichst ein Zeichen, das normalerweise nicht verwendet wird, oder noch besser über die Tastatur nicht eingebbar ist sondern nur über den ASCII-Code)
    beim Import kannst du dann dieses Zeichen wieder durch die Zeilenumbruchszeichen ersetzen.

    In Excel ist das Zeilenumbruchszeichen das Zeichen mit dem Code 10 bzw in VBA die Systemvariabel vbLF.
    Gelegentlich kommt aber auch die Kombination aus Zeichen Code 13 plus Zeichen Code 10 vor (Systemvariable vbCrLF)
    da müsstest du erstmal schauen, was drin steckt.

    die Funktion zum Austausch von Zeichen ist REPLACE(zubearbeitender Text, alte Zeichenfolge, neue Zeichenfolge)

    Gruß Daniel
    Anzeige
    AW: Fehler-Nr. 9 Index außerhalb des gültigen Bereichs
    28.12.2023 20:06:47
    Peer
    Vielen Dank, Daniel.
    Ich werde deinen Tipp für später beherzigen.
    Momentan fehlt mir die Zeit und Muse, es anzupassen.

    Gruß
    Peer
    eine Multiline-Textbox ....
    28.12.2023 21:06:27
    Uduuh
    Hallo,
    ... enthält kein Trennzeichen (chr(13), chr(10)) um die Zeilen zu trennen. Das ist nur Darstellung. Es sei denn, du gibst es per shift+enter ein. Das ist dann 13 + 10
    Gleiches gilt für eine Zelle mit WrapText=True

    Davon ab würde ich die Daten in den .txt nicht mit ; sondern z.B. mit Tab trennen.

    Export:
         Print #ff, Join(Array(wks.Name, rng.Address(0, 0), rng.Formula), vbTab)

    Import:
          With Worksheets(Split(strTmp, vbTab)(0)).Range(Split(strTmp, vbTab)(1))
    
    .Formula = Split(strTmp, vbTab)(2)
    End With



    Gruß aus'm Pott
    Udo
    Anzeige
    AW: eine Multiline-Textbox ....
    29.12.2023 10:41:54
    Peer
    Hallo Udo.

    Entschuldige, das ich mich so spät melde, aber ich habe gestern nach langen Tagen mal Abstand vom Projekt nehmen müssen.
    Heute muss ich es fertig machen, damit am 01.01. alles passt, weshalb ich alles (erstmal) einzeilig gemacht habe.

    Vielen Dank für deinen Hinweis.
    Ich werde mir diesen Tipp mitnehmen und (vielleicht heute noch) ausprobieren.

    Gruß
    Peer

    AW: eine Multiline-Textbox ....
    02.01.2024 16:25:16
    Peer
    Hallo Udo.

    Erst einmal wünsche ich dir und dem Rest der Forum-Mitglieder ein gesundes und erfolgreiches Jahr 2024.

    Ich habe deinen Code einfach mal ersetzt und probiert. Die Textbox habe ich wieder auf "Multiline=true", "WordWrap=true" und "EnterKeyBevavior=true" gesetzt.

    Export
            For Each rng In wks.UsedRange.Cells
    
    If rng.Locked = False And rng.Formula > "" Then
    ' Print #ff, wks.Name & ";" & rng.Address(0, 0) & ";" & rng.Formula
    Print #ff, Join(Array(wks.Name, rng.Address(0, 0), rng.Formula), vbTab)
    End If
    Next

    Import
        Do While Not EOF(ff)
    
    Line Input #ff, strTmp
    ' With Worksheets(Split(strTmp, ";")(0)).Range(Split(strTmp, ";")(1))
    ' .Formula = Split(strTmp, ";")(2)
    With Worksheets(Split(strTmp, vbTab)(0)).Range(Split(strTmp, vbTab)(1))
    .Formula = Split(strTmp, vbTab)(2)
    End With
    ' End With
    Loop

    Leider kommt der Fehler 9 beim Import immer noch.

    Ich gebe dir natürlich recht, die TAB-Trennung wirkt übersichtlicher. Vor- und Nachteile spielen wahrscheinlich für die weitere Verwendung ein Rolle. Im meinem Fall ist TAB ein gute Wahl. Danke für die Anmerkung.

    Oder habe ich deine Posts vorher missverstanden? Ist der Aufwand zu groß, das zu realisieren? Lässt sich nur mit STRG+ENTER der Auswand reduzieren?
    Gruß Peer
    Anzeige
    das Projekt ...
    29.12.2023 20:54:10
    Uduuh
    ... erscheint mir mehr als fragwürdig.
    Wahrscheinlich, weil ich nicht verstehe, was das soll. Die Funktion ist mir klar. Der Sinn nicht.

    Gruß aus'm Pott
    Udo
    AW: das Projekt ...
    29.12.2023 21:46:52
    Peer
    ...warum fragwürdig?
    Bis jetzt haben die Kollegen und ich das Projekt für unsere tägliche Arbeit zur Erfassung und zum Ausdruck genutzt.
    Durch die vielen Anpassungen des Projektes wegen meiner laienhaften Programmierung oder von Arbeitgeberseite her, habe ich mit dem Export/Import eine Möglichkeit schaffen wollen, wenigsten die Daten zu sichern, bevor die "neue" Version der Datei genutzt wird.
    An die Multiline TB habe ich nicht mehr gedacht. Nur als die Kollegen die Funktion zum Sichern genutzt hatten, fiel es auf und ich habe mich die Tage damit auseinandersetzen müssen.
    Nun habe ich dank eurer Tipps und Lösungsvorschläge die Ursache finden können.
    Vielen Dank nochmal dafür an alle.

    Ich wünsche allen aus dem Forum einen guten Rutsch ins neue Jahr.

    Gruß Peer
    Anzeige
    AW: Korrektur
    28.12.2023 15:21:07
    GerdL
    strTmp ohne e.
    AW: Korrektur
    28.12.2023 15:33:54
    Peer
    Hallo Gerd.

    Wie meinst du das?

    Ursprünglich hatte alles gut funktioniert, bis ich dies TextBox Multiline gemacht habe.
    Ich versuche weiterhin die Ursache einzugrenzen und eventuell eine Datei hochzuladen.

    Gruß Peer
    AW: Korrektur
    28.12.2023 15:44:42
    Peer
    Ergänzung.

    Lass ich die Textbox leer (respektive Spalte "Bemerkungen"), kommt keine Fehlermeldung.
    vielleicht
    28.12.2023 16:08:00
    ralf_b
    evtl hast du eine Zeile in deiner datei ,die hier als Datensatz/Zeile gelesen wird, aber nicht die richtigen Daten beinhaltet.
    Zeilenweises schreiben und einlesen und Multiline Texte klingen doch sehr nach einem möglichen Problem.
    Nichts desto trotz hast du noch immer mit Debugging nicht viel am Hut, oder?
    Anzeige
    AW: vielleicht
    28.12.2023 16:37:56
    Peer
    Hallo ralf_b.

    Als Laie habe ich mich bis jetzt bei Thema Debugging eher damit beschäftigt, wenn der Fehler vom Debugger angeboten wurde.
    Da scheinbar aber keine Fehler im Code enthalten sind und ich "nur" eine Fehlermeldung bekomme, stehe ich nun auf dem Schlauch und weiß nicht, wie ich den Fehler mit debuggen finden könnte.

    Ergänzend: Wenn ich in besagter TextBox einen zweizeiligen Eintrag schreibe und dann ihn "exportiere" und wieder "importiere", dann ist der zweite Eintrag weg.

    Ich habe meine Datei nun soweit reduziert, dass ich sie im Zip-Format hochladen kann. Im Container ist eine Bilddatei, die mit ins Stammverzeichnis liegen muss.
    https://www.herber.de/bbs/user/165511.zip

    Mit Rechtsklick auf den Kalendertag und "Arbeitstag öffnen" -> Userform frm_Tag können die Einträge eingetragen werden und durch Aktivieren "Dienstreise" kann im Textbox "Bemerkungen" der mehrzeilige Eintrag geschrieben werden.
    Userbild
    Unter dem Tab "Erfassungsbelege" im Ribbon kann man die Einträge importieren/exportieren.
    Userbild

    Ich hoffe, man kann mit dem Beispiel etwas Licht ins Dunkel bringen...

    Gruß
    Peer

    Anzeige
    Datei funktioniert nicht
    28.12.2023 17:21:14
    Uduuh
    Hallo,
    Fehler beim Start: Variable nicht definiert. frmParameter

    Gruß aus'm Pott
    Udo
    AW: Datei funktioniert nicht
    28.12.2023 17:52:32
    Peer
    Hallo Udo.

    Ich musste die UF frmParameter entfernen, um die Datei klein zu halten.
    Mist, wenn man ohne die UF nicht helfen kann.

    Inzwischen werde ich verrückt und überlege, das Problem abzuhaken und die TextBox ohne Multiline laufen zu lassen.
    AW: vielleicht
    28.12.2023 17:06:22
    Peer
    ralf_b
    
    evtl hast du eine Zeile in deiner datei ,die hier als Datensatz/Zeile gelesen wird, aber nicht die richtigen Daten beinhaltet.
    Zeilenweises schreiben und einlesen und Multiline Texte klingen doch sehr nach einem möglichen Problem
    .


    Ich nehme mal an, dass Multiline-Textbox und mehrzeiliger Zellinhalt (entweder durch "Zelle formatieren"->"Ausrichtung"->"Zeilenumbruch" oder "ALT+ENTER") nicht funktionieren wird.
    Anzeige
    AW: vielleicht
    28.12.2023 17:25:43
    ralf_b
    Dezember;AE15;0.625
    Dezember;AK15;ASDAXASDADA
    ADADS
    aas
    ADa
    Gesamtstunden;C20;0.325

    das steht in der Textdatei die exportiert wurde mit eine multiline Eintrag.
    Da du die Einträge beim wieder importieren nicht auf ihre Gültigkeit prüfst, versucht deine Routine einem Worksheet("ADADS") werte zuzuweisen. Hier sollte der Fehler kommen.
    Entweder du entfernst die Zeilenumbrüche vor dem exportieren oder du überlegst dir was Anderes.
    AW: vielleicht
    28.12.2023 18:01:32
    Peer
    Hallo ralf_b

    Danke für den Hinweis.
    Zumindest hast du mir das Problem aufzeigen können. Und durch deine Erläuterung ist es auch nachvollziehbar.
    Leider weiß ich aktuell nicht, wie ich es mit dem Zeilenumbruch/Multiline lösen könnte.

    Aktuell fehlt mir auch die Zeit, da ich bis 31.12. fertig sein muss und um ehrlich zu sein, der Antrieb, da mich dieses Problem schon seit Tagen ärgert.

    Vielen Dank für deine Hilfe.

    Peer
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige