Hallo und guten Abend an die VBA ler. Habe einen VBA Code der an folgender Zeile scheitert.
If seekArb(txtPosNr, rngRow) Then. Ich verwende eine Eingabemaske zur Eigabe der Daten.
Aber mich mal in der KI versucht, aber das war nicht erfolgreich. Der Fehlertext hierzu: Objektvariable bzw. With-Blockvariable nicht festgelegt. Kann mir jemand mit einfachen Erklärungen ggf. Codetext weiter helfen?
Moin,
da wäre zu prüfen, ob das Objekt überhaupt lebt:
If not Isnull(seekArb) ...
txtPosNr und rngRow auf Inhalte prüfen.
Gruß
Ralf
Danke, habe deinen Vorschlag eingefügt. Fehler beim Kompilieren, „Argument nicht optional“ kommt dann als Ergebnis. Ich stelle den Code hier mal ein, um vielleicht einfacher einen Fehler erkennen zu können. Gruß und ein schönes Wochenende
Private Sub cmdNew_Click()
Dim txtPosNr As Object, txtNummer As Object, txtNachname As Object, txtVorname As Object, txtStrasse As Object, _
usw
antwort, indextb, ufelemente, Eintrag
Worksheets(„Tabelle1“).Unprotect
’ Dim lZeile As Long, i As Long, eintrag As Long, rngRow As Range,
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
ufelemente = Array(„txtPosNr“, „txtnummer“, „txtAnrede“, „txtNachname“, „txtVorname“, „txtStrasse“, „txtPlz“, „txtWohnort“, „txtTelefon“, _
usw
indextb = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30)
lZeile = wsat.Cells(Rows.Count, 1).End(xlUp).Row + 1
Eintrag = 0
' Set txtPosNr = Me.IstData
' If Not seekArb(txtPosNr, rngRow) Then
If Not IsNull(seekArb) Then
Else
Exit Sub
End If
For i = 0 To UBound(ufelemente)
If Trim(Me.Controls(ufelemente(i))) <> Trim(rngRow.Cells(, indextb(i)).Value) Then
mvntWert = Trim(rngRow.Cells(, indextb(i)).Value)
Eintrag = Eintrag + 1
End If
Next i
If Eintrag > 0 Then cmdSave_Click
antwort = MsgBox("Wollen Sie einen neuen Datensatz anlegen?", 4, "Neuer Datensatz")
If antwort = 6 Then
lstData.ListIndex = lstData.ListCount - 1
Eintrag = 0
For i = 2 To UBound(ufelemente)
If Trim(Me.Controls(ufelemente(i))) <> „“ Then Eintrag = Eintrag + 1
Next i
If txtPosNr = lZeile - 1 And txtNummer = „NeuMtgld“ And Eintrag = 0 Then
MsgBox „Es liegt noch ein unbearbeiter neuer Datensatz vor!“ & vbNewLine & „Es wird keine neuer Satz erstellt!“, , „Abbruch Datensatzerstellung“
Exit Sub
End If
neusatz = True
wsat.Cells(lZeile, 1) = CStr(lZeile)
wsat.Cells(lZeile, 2) = CStr(„NeuMtgld“)
wsat.Cells(lZeile, 1) = WorksheetFunction.Max(wsat.Columns(1)) - 1
lstData.AddItem
lstData.List(lstData.ListCount - 1, 1) = CStr(„NR“ & lZeile)
lstData.ListIndex = lstData.ListCount - 1
neusatz = False
End If
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Call Calculate
End Sub
Tut mir leid, aber in diesem Wust finde ich mich nicht zurecht, da ist ja nichtmal die Zeile markiert,die den Fehler auslöst. Deine Frage wäre in einem Forum besser aufgehoben, das Code darstellen kann. Versuch’s mal bei MSO.
Gruß
Ralf
ps: Ein paar Worte zu Sinn & Zweck wären auch angebracht.