VBA - Zuweisen eines Makros zur Formularsteuerungsschaltfläche

0

Ich habe den folgenden Code in VBA geschrieben, um vollständige Zeilen zu löschen, wenn in Spalte U von Sheet21 (tatsächlich "ROG-Registrierung" genannt) "Self Cancelled" oder "Waitlisted" angezeigt werden. Wenn ich auf der Registerkarte ROG-Registrierung bin, während das VBA-Fenster geöffnet ist und ausgeführt wird, funktioniert dies einwandfrei.

Ich habe eine separate Registerkarte mit Makroschaltflächen und habe dieses Makro der Formularsteuerungsschaltfläche zugewiesen, aber wenn ich auf die Schaltfläche klicke, geschieht nichts.

Irgendeine Idee warum? Kann es sein, dass ich im Code den Namen "ROG Registration" verwenden muss? ".Wählen" Sie zuerst die Registerkarte, da sie sich auf einer anderen Registerkarte als die Schaltfläche befindet?

Sub ROG_DeleteRows()

Dim r As Integer
For r = Sheet21.UsedRange.Rows.Count To 1 Step -1
    If Cells(r, "U") = "Self Cancelled" Then
         Sheet21.Rows(r).EntireRow.Delete
    ElseIf Cells(r, "U") = "Waitlisted" Then
         Sheet21.Rows(r).EntireRow.Delete
    End If
Next

End Sub
Lenny
quelle
Sie müssen das Blatt jedes Mal angeben: If Sheet21.Cells(r, "U") =... Andernfalls wird standardmäßig das aktive Blatt (d. H. Das mit den Schaltflächen) verwendet
cybernetic.nomad
@ cybernetic.nomad es hat perfekt funktioniert. Vielen Dank!!! Ich dachte, das könnte das Problem sein, war mir aber nicht sicher, wo ich es bearbeiten sollte (ich bin ziemlich neu in VBA).
Lenny
@Lenny ,, das solltest du schreiben Wenn Sheet21.Cells (r, "U") = "Self Cancelled" Dann anstatt Wenn Cells (r, "U") = "Self Cancelled", dann .
Rajesh S