Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Mit Makro über Optionbuttons Zellen einfügen und Namen ändern
#1
Hallo,

in einer UserForm sind zwei OptionButtons und ein CommandButton gesetzt.

Mittels eines Makros soll nun eine neue Zeile oder Spalte über den jeweiligen OptionButton eingefügt werden können, und in einem zweiten Schritt abgefragt werden, ob die neu eingefügten Zellen in einen bestimmten Namensbereich (der in einem anderen Makro verwendet wird) übernommen werden sollen.

Bisher verwende ich folgenden Ansatz für das Einfügen einer Spalte (hier mit Abfrage für Schritt 2, aber noch nicht eingebunden).

Code:
Private Sub CommandButton1_Click()
         Dim x As Control
           For Each x In UserForm1.Controls
               If x.Value = True Then
               If MsgBox("Namensbereich ändern?", vbOKCancel) = vbOK Then
               Selection.EntireColumn.Insert
               Else
               Exit Sub
               End If            
               End If
           Next
     End Sub
Wie ist zunächst für das Einfügen einer neuen Zeile oder Spalte zu kodieren?

Danke!

Steini
Antworten Top
#2
Hallo Steini,

Du hast doch das Einfügen einer Spalte schon im Code. Zeile geht genau so:
Selection.EntireRow.Insert
Wenn Du das nicht an Stelle der Selection haben willst, dann definiere die Zelle, z.B. Range("A1") statt Selection.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#3
Hallo André,

danke für den Code zum Einfügen einer Zeile.

Mit dem bisherigen Code kann derzeit eine Spalte eingefügt werden, unabhängig davon, ob der Optionbutton für Spalte oder Zeile geschaltet wird. Ziel ist, Zellen in Abhängigkeit von der Optionbutton-Auswahl hinzuzufügen, also in einfachen Worten:

falls Auswahl Optionbutton = Zeile, soll eine Zeile hinzugefügt werden,

und

falls Auswahl Optionbutton = Spalte, soll eine Spalte hinzugefügt werden.

Liegt es an der Variablen und der Wertezuweisung?

Steini
Antworten Top
#4
Hallo Steini,

ich weiß ja nun nicht, warum Du die verschiedenen Controls durchforstest. Ich würde den Zustand der Optionbuttons abfragen oder je nachdem sogar auf den Click auf den Optionbutton reagieren.

Wenn es beim CommandButton bleiben soll, dann kannst Du die OptionButtons im Prinzip so abfragen:
Code:
Private Sub CommandButton1_Click()
If Me.OptionButton1.Value = True Then MsgBox 1 Else MsgBox 2
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#5
Hallo Steini,

so vielleicht?

Code:
Private Sub CommandButton1_Click()
 Dim rngB As Range
 If OptionButton1 Then Set rngB = Selection.EntireRow
 If OptionButton2 Then Set rngB = Selection.EntireColumn
 If Not rngB Is Nothing Then
   If MsgBox("Namensbereich ändern?", vbOKCancel) = vbOK Then rngB.Insert
 End If
End Sub

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Steini
Antworten Top
#6
Hallo!

Uwe, Dein Code trifft es ziemlich genau. Vielen Dank!

Danke André, auch für Deinen Code und den Ansatz, auf den CommandButton zu verzichten und stattdessen auf die Optionbuttons zu reagieren. Dies kam mir auch schon in den Sinn, und ich finde dies auch viel eleganter.  

In einer zweiten Abfrage soll nun festgelegt werden können, ob die neu eingefügten Zellen in den Namensbereich übernommen werden sollen oder nicht.

Offensichtlich werden die Zellen mit dem Einfügen automatisch in den Namensbereich übernommen.

Wie könnte hier die Übernahme gesteuert werden? Gibt es bspw. eine Funktion dergestalt, dass in einem bestimmten Zellbereich alle Zellen außer XY angesprochen werden können (und damit der Bereichsbezug des Namens geändert werden kann)?

Steini
Antworten Top
#7
Hallo Steini,

was meinst Du mit "alle Zellen außer XY" ?
Wenn Du innerhalb eines benamten Bereiches Zellen einfügst, wird der Bereich entsprechend vergrößert.
Wenn Du das nicht willst, die Daten ohne Bereichsänderung weitergeschoben werden sollen, müsstest Du die Daten erst "umkopieren" und dann die neuen Daten auf die frei gewordenen Zellen einfügen.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste