sehr neu zu Excel VBA und haben an einer Übung zum Erstellen eines Bestellformulars mit einem Benutzerformular erstellt.Zeile Funktion Mathematik ClearContents - Excel VBA
Beim Versuch, Zeilen anhand einiger Variablen zu löschen, ist ein Problem aufgetreten.
Ich habe eine Schaltfläche, um die Zeile zu löschen, die mit dem folgenden Code zu dem Blatt hinzugefügt, gerade:
Private Sub RemovePrevious_Click()
'Removes last line of PO
If LineItemTotal > 1 Then
Rows(LineItemTotal + POrowstart - 1).SpecialCells(xlCellTypeConstants).ClearContents
End If
End Sub
LineItemTotal ein Bereich auf dem Blatt, das zunimmt, wenn neue Zeilen hinzugefügt werden. Es ist öffentlich mit POrowstart am Anfang der Userform erklärt:
Private LineItemTotal As Integer
Private POrowstart As Integer
Sie werden dann in einem anderen Teil zuzugeordnet:
LineItemTotal = Range("LineItemTotal")
POrowstart = 10
Das Problem ist, dass bei der Verwendung der Taste der REMOVEPREVIOUS Unter laufen, Die Mathematik addiert sich nicht. Wenn LineItemTotal beispielsweise 3 ist, sollte Zeile 12 (die richtige Zeile) gelöscht werden, stattdessen wird Zeile 11 gelöscht. Wenn Sie die Zeile erneut drücken (LineItemTotal ist jetzt 2, also sollte 11 gelöscht werden), wird der Fehler 'no cells' ausgegeben wurden gefunden, als ob es 11 löscht, aber es hat dies bereits fälschlicherweise gelöscht.
Ich habe SpecialCells im Code, da es Formeln in der Zeile gibt, die ich behalten möchte.
Danke für jede Hilfe mit diesem.
Ich kann Ihnen einen kleinen, aber sehr wirkungsvollen Ratschlag geben: Zeichnen Sie ein MACRO auf, in dem Sie tun, was Sie brauchen (zB Löschen ausgewählter Zellen), beenden Sie die Aufnahme und kopieren Sie dann den generierten Code in Ihren VBA (möglicherweise müssen Sie etwas tun) Anpassungen obwohl). So finde ich den Weg, viele Dinge in VBA zu erledigen. – FDavidov
Der einfachste Weg, dies zu debuggen, besteht darin, das lokale Fenster im vbexplorer zu verwenden und zu beobachten, wie sich die Werte für die Variablen mit jedem Schritt Ihres Codes ändern. Drücken Sie F8, um eine einzelne Zeile auszuführen. Ansicht> Lokalfenster, um Einheimische anzuzeigen. Genießen! – User632716
Danke, beides! Wirklich guter Rat, aber noch immer nicht zur Wurzel des Problems gekommen, wenn du noch helfen kannst? Der Code funktioniert, wenn ich die Variablen innerhalb meines Subs deklariere und setze, aber nicht, wenn ich allgemeine Deklarationen deklariere und sie in einem anderen Sub setze, scheint also etwas mit den Variablen und dem Umfang zu tun zu haben? Und Tom Preston Ich kann nicht scheinen, in diesen Code mit dem Debugger zu gehen, es springt einfach zu einem anderen Sub! Danke nochmal –