Hallo zusammen,
ich habe mich hier angemeldet weil ich aktuell ein kleines Problem mit einer widerspenstigen VBA Programmierung habe und ich anscheinend zu Blöd bin den Fehler zu finden. Ich hoffe hier den einen hilreichen Hinweis zu finden.
Kurz zu meinem Problem:
Ich bin aktuell dabei eine Excel Datei mit Formularen zu versehen. Unter anderem auch mit einem Formular mit dem man Datensätze in der Tabelle suchen, ändern und wieder speichern kann. Ich habe allerdings ein Problem mit dem Suchfeld. Solange ich nach Textinhalten (z.B. Test) suche funktioniert alles Bestens, sobald ich aber nach Numerischen Inhalten (z.B. 1234) suche bekomme ich die Fehlermeldung "Laufzeitfehler 9 Index außerhalb des gültigen Bereichs". Ich hatte ursprünglich vermutet das es etwas mit der Formatierung der Tabellenfelder zu tun haben könnte. Aber eine Änderung der Formatierung hat auch keine Besserung gebracht.
Hier noch der Ausschnitt aus dem Code:
Option Explicit
Dim Anz%, Zeile%, Data
Private Sub cmdSuche_Click()
Dim i%, found As Boolean
found = False
For i = 1 To Anz
If txtKomNr.Value = Data(i, 2) Then <<<<<<<<<<<<< Das ist das Suchfeld
Zeile = i + 1
txtMeldung.Value = "Gefunden in Zeile " & Zeile
txtDatum.Value = Data(i, 1)
txtFgNr.Value = Data(i, 3)
txtBehNr.Value = Data(i, 4)
txtKunde.Value = Data(i, 5)
txtBestellort.Value = Data(i, 6)
txtEmpfaengerland.Value = Data(i, 7)
txtVerkaeufer.Value = Data(i, 8)
found = True
Exit For
End If
Next i
If found Then
txtDatum.Enabled = True
txtFgNr.Enabled = True
txtBehNr.Enabled = True
txtKunde.Enabled = True
txtBestellort.Enabled = True
txtEmpfaengerland.Enabled = True
txtVerkaeufer.Enabled = True
Range(Cells(Zeile, 1), Cells(Zeile, 8)).Select
Else
txtMeldung.Value = "Suche hat nichts gefunden"
End If
End Sub
Private Sub UserForm_Initialize()
Anz = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row - 1
Data = Range(Cells(5, 1), Cells(Anz + 1, 8))
txtMeldung.Value = "Suchbegriff eingeben"
txtBehNr.Enabled = False
txtKunde.Enabled = False
txtBestellort.Enabled = False
txtEmpfaengerland.Enabled = False
txtVerkaeufer.Enabled = False
End Sub
Hat da jemand eine Idee?
Ich bedanke mich schon mal bei allen die sich die Mühe machen mir zu antworten.
ich habe mich hier angemeldet weil ich aktuell ein kleines Problem mit einer widerspenstigen VBA Programmierung habe und ich anscheinend zu Blöd bin den Fehler zu finden. Ich hoffe hier den einen hilreichen Hinweis zu finden.
Kurz zu meinem Problem:
Ich bin aktuell dabei eine Excel Datei mit Formularen zu versehen. Unter anderem auch mit einem Formular mit dem man Datensätze in der Tabelle suchen, ändern und wieder speichern kann. Ich habe allerdings ein Problem mit dem Suchfeld. Solange ich nach Textinhalten (z.B. Test) suche funktioniert alles Bestens, sobald ich aber nach Numerischen Inhalten (z.B. 1234) suche bekomme ich die Fehlermeldung "Laufzeitfehler 9 Index außerhalb des gültigen Bereichs". Ich hatte ursprünglich vermutet das es etwas mit der Formatierung der Tabellenfelder zu tun haben könnte. Aber eine Änderung der Formatierung hat auch keine Besserung gebracht.
Hier noch der Ausschnitt aus dem Code:
Option Explicit
Dim Anz%, Zeile%, Data
Private Sub cmdSuche_Click()
Dim i%, found As Boolean
found = False
For i = 1 To Anz
If txtKomNr.Value = Data(i, 2) Then <<<<<<<<<<<<< Das ist das Suchfeld
Zeile = i + 1
txtMeldung.Value = "Gefunden in Zeile " & Zeile
txtDatum.Value = Data(i, 1)
txtFgNr.Value = Data(i, 3)
txtBehNr.Value = Data(i, 4)
txtKunde.Value = Data(i, 5)
txtBestellort.Value = Data(i, 6)
txtEmpfaengerland.Value = Data(i, 7)
txtVerkaeufer.Value = Data(i, 8)
found = True
Exit For
End If
Next i
If found Then
txtDatum.Enabled = True
txtFgNr.Enabled = True
txtBehNr.Enabled = True
txtKunde.Enabled = True
txtBestellort.Enabled = True
txtEmpfaengerland.Enabled = True
txtVerkaeufer.Enabled = True
Range(Cells(Zeile, 1), Cells(Zeile, 8)).Select
Else
txtMeldung.Value = "Suche hat nichts gefunden"
End If
End Sub
Private Sub UserForm_Initialize()
Anz = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row - 1
Data = Range(Cells(5, 1), Cells(Anz + 1, 8))
txtMeldung.Value = "Suchbegriff eingeben"
txtBehNr.Enabled = False
txtKunde.Enabled = False
txtBestellort.Enabled = False
txtEmpfaengerland.Enabled = False
txtVerkaeufer.Enabled = False
End Sub
Hat da jemand eine Idee?
Ich bedanke mich schon mal bei allen die sich die Mühe machen mir zu antworten.