Sagen Sie einem Makro, ob das Objekt vorhanden ist, und wenn ja, A. aber wenn nein, dann B.?

650
Kenny

Ich benutze MS Excel 2007.

Ich habe den folgenden Code in einem Makro, das zwei Optionsschaltflächen (nicht aktives X) in Cell erstellt B25.

Range("B25").Select ActiveSheet.OptionButtons.Add(129.75, 540, 24, 20.25).Select Selection.Name = " Select1Button "  Range("B25").Select ActiveSheet.OptionButtons.Add(225.75, 540, 79.5, 21.75).Select Selection.Name = " Select2Button " 

Gibt es eine Möglichkeit für das Makro, zu überprüfen, ob eine der beiden Zellen bereits in Zelle 'B25' vorhanden ist, und wenn ja, dann nichts tun und den Rest des Makros beenden, aber wenn sie sie nicht wie oben beschrieben erstellen?

So etwas wie:

In CellB25 does "Select1Button" & "Select2Button" Exist? Yes = Then ignore the ActiveSheet.OptionButtons.Add code and continue to run  the rest of the macro code.  No - Then run the ActiveSheet.OptionButtons.Add code and continue to run the  rest of the macro code. 

Ich habe seit Stunden daran festgehalten!

0
Lassen Sie mich sagen, dass die Optionsschaltfläche sowohl in Zellen als auch in ActiveX-Steuerelementen erstellt werden kann. Und Sie können weitere Aktionen entsprechend einstellen. Überprüfen Sie, ob mein Beitrag Ihnen helfen wird Rajesh S vor 5 Jahren 0

2 Antworten auf die Frage

0
Akina

Codeentwurf:

public sub createoptionbutton(xname,a,b,c,d) dim obj as object xname=trim(xname) for each obj in activesheet.optionbuttons if obj.name=xname then exit sub next activesheet.optionbuttons.add(a,b,c,d).select selection.name=xname end sub 

Bearbeiten Sie es nach Bedarf.

PS. Sie müssen vor der Erstellung der Optionsbox keine Zelle auswählen - es spielt keine Rolle. Zeigen Sie einfach auf ein bestimmtes Arbeitsblatt anstelle von ActiveSheet. Und ich würde empfehlen, die GroupBox-Eigenschaft zusätzlich festzulegen.

PPS. Auf Anforderung von Rajesh S - der Funktion, die nur die Existenz der Optionsschaltfläche überprüft:

public function optionbuttonexists(xname) as boolean dim obj as object xname=trim(xname) for each obj in activesheet.optionbuttons if obj.name=xname then  optionbuttonexists = true exit sub end if next end function  

... und Rückwärtsfunktion

public function optionbuttonabsent(xname) as boolean dim obj as object xname=trim(xname) for each obj in activesheet.optionbuttons if obj.name=xname then exit sub next optionbuttonabsent=true end function  

Die letzte Funktion erlaubt es, die Aufgabe des Autors als zu lösen

if optionbuttonabsent(" Select2Button ") then ActiveSheet.OptionButtons.Add(225.75, 540, 79.5, 21.75).Select Selection.Name = " Select2Button " end if 
Ihr Code muss korrigiert werden. ,, `public sub createoptionbutton (xname, a, b, c, d)` wird nie funktionieren ,, und OP fordert auf, die Existenz von Option Buttons zu überprüfen! Rajesh S vor 5 Jahren 0
@RajeshS * wird nie funktionieren * Natürlich muss es aufgerufen werden. Aber wer den Code erstellt, der in Frage gestellt wird, kann dies meiner Meinung nach tun ... * OP fordert, wie die Existenz von Optionsschaltflächen überprüft wird. * Der größte Teil des Codes macht genau das. Akina vor 5 Jahren 0
0
Rajesh S

Ich möchte Ihnen die Lösung in zwei Teilen vorschlagen.

Teil eins wird Ihnen beim Erstellen Option Buttonin Zellen helfen .

In Teil zwei können Sie feststellen, was Option Buttonangeklickt wurde, um weitere Aktionen auszuführen.

Teil 1:

Dieses VBA (Makro) hilft Ihnen beim Erstellen Two Option buttonsin Zelle C1und D1mit Gruppe / Frame.

Sub AddOptionButtons() Dim btn1 As OptionButton Dim btn2 As OptionButton Dim btn3 As OptionButton Dim grbox As GroupBox Dim t As Range Dim s As Range Dim i As Integer  ActiveSheet.OptionButtons.Delete ActiveSheet.GroupBoxes.Delete  For i = 1 To 1 Step 1 Set t = ActiveSheet.Range(Cells(i, 3), Cells(i, 3)) Set s = ActiveSheet.Range(Cells(i, 4), Cells(i, 4))  Set btn1 = ActiveSheet.OptionButtons.Add(t.Left, t.Top, t.Width, t.Height) Set btn2 = ActiveSheet.OptionButtons.Add(s.Left, s.Top, s.Width, s.Height) Set grbox = ActiveSheet.GroupBoxes.Add(t.Left, t.Top, t.Width + 50, t.Height)  With btn1 .Caption = "" .Display3DShading = True .LinkedCell = "E" & i End With  With btn2 .Caption = "" .Display3DShading = True End With  With grbox .Caption = "My Group" .Visible = True End With Next i  End Sub 

Wie es funktioniert:

  1. Kopieren Sie diesen Code als Standardmodul.
  2. For i = 1 To 1 Step 1bestimmt, dass 2 Option Buttonsin erstellt wird Row 1.
  3. Wenn Sie erstellen müssen 4 Option Buttonssollte es sein, For i = 1 To 2 Step 1.
  4. ActiveSheet.Range(Cells(i, 3)bestimmt, dass iist Row valueund 3ist Column, sind editierbar.
  5. Lined Cell to Option Buttonsist E1, was bearbeitet werden kann.

Teil 2:

Dieses Makro hilft Ihnen zu bestimmen, was Option Buttonangeklickt wurde, um weitere Maßnahmen zu ergreifen.

Sub TheSelectCase()  Select Case Range("E1").Value  Case 1 Your Code for further action. Case 2 Your Code for further action.  End Select End Sub 
Ich bin froh, Ihnen helfen zu können, @kenny weiter zu fragen Rajesh S vor 5 Jahren 0