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..."