Laufzeitfehler 1004... mal wieder...

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
UserForm MsgBox
Bild

Betrifft: Laufzeitfehler 1004... mal wieder...
von: Udo Hartmann
Geschrieben am: 22.02.2005 11:42:32
Hallo, habe folgenden code, um in einer tabelle zeilen einzufügen, bzw. zu löschen:


Private Sub C_Save_Click()
Sheets("A-Z").Select
If MeinFormular.Caption = "Neuer Datensatz" Or MeinFormular.Caption = "Datensatz kopieren" Then
    MeinFormular.Caption = "***"
    Range("A" + Format(L_Nummer.Caption - 1, "####")).Select 'erzeugt keinen Fehler
    Selection.EntireRow.Insert
End If
'[...] Einfügen des Datensatzes usw.
Sheets("Anzeige").Select
MeinFormular.Hide
End Sub


Private Sub C_Loeschen_Click()
If MsgBox("Achtung! Sie sind dabei, einen" + vbCrLf + "Datensatz zu löschen. Dies" + vbCrLf + "kann nicht zurückgenommen werden!", vbOKCancel) = vbOK Then
    Sheets("A-Z").Select
    Range("A" + Format(S_DS.Value + 1, "####")).Select 'erzeugt Fehler
    Selection.EntireRow.Delete
    S_DS.Max = S_DS.Max - 1
    Sheets("Anzeige").Select
End If
End Sub

Das eigentliche Phänomen ist, dass die Save-Routine beim Range-Select keinen Fehler auslöst (wird aus einem Userform aufgerufen), die löschroutine aber wohl (wird über einen Button auf einem anderen Sheet aufgerufen - ja, ich habe TakeFocusOnClick für diesen Button auf "false" gesetzt!)
Wo liegt mein Denkfehler? Der entscheidende Code ist doch gleich!?! Das entsprechende Sheet ist auch aktiv/selektiert...
Gruß und Danke für Vorschläge
Udo
Bild

Betrifft: AW: Laufzeitfehler 1004... mal wieder...
von: bst
Geschrieben am: 22.02.2005 11:55:08
Mahlzeit Udo,
laß es einfach laufen.
Wenn der Fehler ansteht öffne das VBA-Direktfenster und mach sowas:
?S_DS.Value
?Format(S_DS.Value + 1, "####")
?Range("A" + Format(S_DS.Value + 1, "####").Address
was siehst Du da ??
cu, Bernd
Bild

Betrifft: AW: Laufzeitfehler 1004... mal wieder...
von: Udo Hartmann
Geschrieben am: 22.02.2005 12:11:54

?S_DS.Value -> 1
?Format(S_DS.Value + 1, "####") -> 2
?Range("A" + Format(S_DS.Value + 1, "####")).Address -> $A$2
(ich hatte die formel auch schon außerhalb der range-funktion, an der stelle stimmt's also...)
Bild

Betrifft: AW: Laufzeitfehler 1004... mal wieder...
von: bst
Geschrieben am: 22.02.2005 12:28:22
Hmm,
> die löschroutine aber wohl (wird über einen Button auf einem anderen Sheet aufgerufen
falls Dein Code hinter Tabelle1 stehen sollte, schreibt dieses:
Sheets("Tabelle2").Select
Range("A2").Value = "Hallo"
IMMER noch nach Tabelle1, nicht nach Tabelle2 !
Versuch mal sowas, alles in eine Zeile:
Sheets("A-Z").Range("A" + Format(S_DS.Value + 1, "####")).EntireRow.Delete
HTH, Bernd
Bild

Betrifft: AW: Laufzeitfehler 1004... mal wieder...
von: Udo Hartmann
Geschrieben am: 22.02.2005 12:43:16
So ein Käse... hätte mir auch selbst auffallen können... :-)
klar, der code klebt an einem anderen blatt dran...
Guten Morgen, Udo!
 Bild

Beiträge aus den Excel-Beispielen zum Thema "Laufzeitfehler 1004... mal wieder..."