Registriert seit: 26.03.2015
Version(en): 1997
08.04.2016, 16:41
(Dieser Beitrag wurde zuletzt bearbeitet: 11.04.2016, 09:10 von Rabe.
Bearbeitungsgrund: Absatzstrukturierung korrigiert
)
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
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
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)
Registriert seit: 26.03.2015
Version(en): 1997
08.04.2016, 20:57
(Dieser Beitrag wurde zuletzt bearbeitet: 11.04.2016, 09:09 von Rabe.
Bearbeitungsgrund: Absatzstrukturierung korrigiert
)
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
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
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)
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
08.04.2016, 21:52
(Dieser Beitrag wurde zuletzt bearbeitet: 08.04.2016, 21:53 von Kuwer.)
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:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• Steini
Registriert seit: 26.03.2015
Version(en): 1997
10.04.2016, 22:49
(Dieser Beitrag wurde zuletzt bearbeitet: 12.04.2016, 22:38 von WillWissen.
Bearbeitungsgrund: Absatzstrukturierung korrigiert
)
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
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
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)