mark47
Goto Top

Suche in Object erforderlich

Hallo zusammen. Ich habe eine Datei, in der ich mittels UserForm etc. Daten verändern will. Ich kann ich die Werte hierüber nicht verändern, weil der Code in einem Fehlerhinweis endet. Ich hänge mal den VBA-Code an, in der Hoffnung jemand kann mir diesbezüglich weiter helfen. Dies ist die Spalte, die mir als Fehler angezeigt wird: Fehlertext Laufzeitfehler 424, Object erforderlich. Schön wäre es, wenn jemand einen entsprechenden Codeabschnitt hier einstellen könnte. Danke und Gruß

Hier die Spalte die gelb markiert wird:
If rngRow.Cells(, colAtBetriebskosten).Value <> txtBetriebskosten.Text Then

Hier mein Codetext:
Private Sub cmdSave_Click()
 Dim txtBetriebskosten As Object
 Dim txtEPreis As Variant
 Dim txtVerbrauchswert As Variant
 Dim txtMieteranteil As Variant
 Dim ausuf As Boolean
 Dim mvntWert As Variant
 Dim Lzeile As Long
 Dim rngRow As Range
Dim LRow As Integer  ' Hier versuche ich die Tabelle anzusprechen  
    ausuf = True
    If seekArb(txtPosNr, rngRow) Then
    ThisWorkbook.RefreshAl

'Hier die Tabelle konkret angesprochen  
 LRow = Worksheets("Tabelle4").Cells(Rows.Count, 2).End(xlUp).Row  
  
 If rngRow.Cells(, colAtPosNr).Value <> CLng(Trim(CStr(txtPosNr.Text))) Then mvntWert = rngRow.Cells(, colAtPosNr).Value: rngRow.Cells(, colAtPosNr).Value = Trim(CStr(txtPosNr.Text))

If rngRow.Cells(, colAtPosNr).Value <> CLng(Trim(CStr(txtPosNr.Text))) Then mvntWert = rngRow.Cells(, colAtPosNr).Value: rngRow.Cells(, colAtPosNr).Value = Trim(CStr(txtPosNr.Text))

If rngRow.Cells(, colAtBetriebskosten).Value <> txtBetriebskosten.Text Then mvntWert = rngRow.Cells(, colAtBetriebskosten).Value: rngRow.Cells(, colAtBetriebskosten).Value = txtBetriebskosten.Text

If rngRow.Cells(, colAtEPreis).Value <> txtEPreis.Text Then mvntWert = rngRow.Cells(, colAtEPreis).Value: rngRow.Cells(, colAtEPreis).Value = txtEPreis.Text

If rngRow.Cells(, colAtVerbrauchswert).Value <> txtVerbrauchswert.Text Then mvntWert = rngRow.Cells(, colAtVerbrauchswert).Value: rngRow.Cells(, colAtVerbrauchswert).Value = txtVerbrauchswert.Text

If rngRow.Cells(, colAtMieteranteil).Value <> txtMieteranteil.Text Then mvntWert = rngRow.Cells(, colAtMieteranteil).Value: rngRow.Cells(, colAtMieteranteil).Value = txtMieteranteil.Text

    ausuf = False
    Lzeile = Me.lstData.ListIndex
    Call UserForm_Initialize
    Me.lstData.ListIndex = Lzeile
    Else
    MsgBox "Nummer " & txtPosNr.Text & " nicht gefunden", vbExclamation + vbOKOnly  
    End If
    Call cmdNew_Click
    
End Sub

Content-Key: 8559270778

Url: https://administrator.de/contentid/8559270778

Printed on: April 16, 2024 at 16:04 o'clock

Member: HansDampf06
HansDampf06 Feb 21, 2024 updated at 14:11:04 (UTC)
Goto Top
Zitat von @mark47:
Hier die Spalte die gelb markiert wird:
If rngRow.Cells(, colAtBetriebskosten).Value <> txtBetriebskosten.Text Then
Ist das wirklich so schwer, den Fehler / die Unvollständigkeit Deines Codes in so einer einfachen Zeile zu entdecken?

Im Übrigen solltest Du Dir noch einmal durch den Kopf gehen lassen, aus welchen Elementen ein IF-Konstrukt besteht, und ob alle diese Elemente für alle verwendeten IF-Konstrukte vorhanden sind.

Viele Grüße
HansDampf06
Member: mark47
mark47 Feb 21, 2024 at 14:19:26 (UTC)
Goto Top
Hallo, bin jetzt gerade etwas ratlos, was deinen Kommentar betrifft. Ich meinte hiermit den Bereich, der gelb markiert wird.

Die komplette Zeile ist ja die hier folgende.
If rngRow.Cells(, colAtBetriebskosten).Value <> txtBetriebskosten.Text Then mvntWert = rngRow.Cells(, colAtBetriebskosten).Value: rngRow.Cells(, colAtBetriebskosten).Value = txtBetriebskosten.Text

Sorry, hab nur minimale Kenntnisse in VBA, daher die Frage in diesem Forum.
Member: insidERR
Solution insidERR Feb 21, 2024 updated at 14:28:06 (UTC)
Goto Top
Guck dir mal das hier an: "Dim txtBetriebskosten As Object" und mach nen String draus
Member: HansDampf06
Solution HansDampf06 Feb 21, 2024 at 14:31:03 (UTC)
Goto Top
Zitat von @insidERR:

Guck dir mal das hier geneuer an:
"Dim txtBetriebskosten As Object" und mach nen String draus

Das ist bei seinem mitgeteilten Code unzutreffend, zumal txBetriebskosten ja den Member Text haben soll. Stattdessen muss er nach der Definition einer Objektvariablen diese auch Instanzieren. Das erfolgt über eine Set-Anweisung zusammen mit New. Ganz abgesehen davon wissen wir gar nicht, in welchem Zusammenhang der mitgeteilte Code steht, so dass er auch nicht wirklich beurteilt werden kann.

Das Problem seines Codes ist das, was er selber von sich einschätzt: minimale Kenntnisse in VBA. Hier muss er schon ein Stück weit selbst aktiv werden und sich in VBA vertiefen. Immerhin hat VBA eine brauchbare Hilfefunktion. Dann würde er sich beispielsweise erarbeiten können, warum .Cells als nächstes von einer Fehlermeldung betroffen sein wird.

Viele Grüße
HansDampf06
Member: mark47
Solution mark47 Feb 21, 2024 at 16:15:16 (UTC)
Goto Top
Vielen Dank, passt so. Gruß Mark