Registriert seit: 24.12.2018
Version(en): 2016
Hallo zusammen,
ich möchte einen einfachen Fragebogen aufsetzen und habe dafür folgendes Szenario. Leider habe ich es mit Beispielen und Vorlagen bisher nicht geschafft, das Ganze zum Laufen zu bringen.
Also, wir haben zwei Arbeitsblätter, sagen wir A1 und A2.
In A1 sollen in mehreren Zeilen jeweils 10 Option Buttons nebeneinander stehen, ein Button pro Spalte.
In unterschiedlichen Abständen kommt jeweils ein Füllzeile, in der nichts stehen darf. Die Aufteilung ist hierbei genau so:
3 Zeilen mit jeweils 10 Buttons
Füllzeile
6 Zeilen mit jeweils 10 Buttons
Füllzeile
14 Zeilen ""
Füllzeile
5 Zeilen ""
Füllzeile
9 Zeilen ""
Jetzt soll im zweiten Arbeitsblatt (A2) für jeden Button in jeder Zeile eine Zahl ausgewiesen werden. Klicke ich also Button 1 in Zeile 1, würde in A2 in zelle B2 eine 1 erscheinen. Selbe zeile aber Button zwei, wäre es dann eine 2 in B2 usw. Insgesamt also 1-10 , wobei jede Zeile einen neuen Zellbezug in A2 hätte und wieder bei 1 begänne. Schlussendlich wäre dann noch ein Befehl für einen gesonderten Control Button, der alle Option buttons im aktiven Arbeitsblatt resettet.
Hoffe, das war einigermaßen verständlich. Kann mir hier bitte jemand mit den entsprechenden Befehlen helfen?
Danke!!
Registriert seit: 12.04.2014
Version(en): Office 365
Moin
Mal eben 370 Option Buttons verwalten? Da hat wohl jemand Langeweile.
Eigentlich reicht doch ein X in die Zelle setzen.
Wir sehen uns!
... Detlef
Meine Beiträge können Ironie oder Sarkasmus enthalten.
Registriert seit: 24.12.2018
Version(en): 2016
Leider reicht das nicht. Funktionieren würde das grundsätzlich aber auch dann müsste man via Makro die Eingaben resetten. Daneben gibt es noch eine Reihe anderer Gründe, wieso es in diesem Fall via Option Buttons gehen muss.
Gruß
Registriert seit: 12.04.2014
Version(en): Office 365
Dann bin ich mal gespannt wie die VBA-Spezis das bewerten.
Wir sehen uns!
... Detlef
Meine Beiträge können Ironie oder Sarkasmus enthalten.
Registriert seit: 24.12.2018
Version(en): 2016
22.03.2019, 00:42
(Dieser Beitrag wurde zuletzt bearbeitet: 22.03.2019, 05:48 von WillWissen.
Bearbeitungsgrund: Codetags
)
Um dem Ganzen noch einen Anstoß zu geben: Ich habe eine Vorlage im Netz gefunden und leicht abgeändert .
Damit werden an vorgegebener Position stets zwei neue Reihen mit jeweils zehn Option Buttons erstellt. Das funktioniert soweit gut, nur bleiben bei mir zwei Fragen übrig:
1) Wie schaffe ich es statt zwei "Fragereihen" 37 zu erstellen und dabei die zuvor genannten Füllreihen einzuhalten? Bei NumberOfQuestions einfach 37 einzugeben funktioniert ja leider nur bedingt.
2) Im Augenblick gibt er links neben jeder Reihe eine Zahl aus, abhängig davon welcher Button angeklickt wurde. Wenn ich das richtig verstehe, geschieht das unten mit der LinkedCell. Wie muss ich die zeilen abändernl, damit diese Zahlen an exakt selber Stelle nur auf einem anderen Arbeitsblatt ausgegeben werden, nennen wir es "Blatt 2"?
Hoffe, es hat jemand eine Idee.
Code: Option Explicit
Sub SetupSurvey()
Dim grpBox As GroupBox
Dim optBtn As OptionButton
Dim maxBtns As Long
Dim myCell As Range
Dim myRange As Range
Dim wks As Worksheet
Dim iCtr As Long
Dim FirstOptBtnCell As Range
Dim NumberOfQuestions As Long
maxBtns = 10
NumberOfQuestions = 2
Set wks = ActiveSheet
With wks
Set FirstOptBtnCell = .Range("F5")
Set myRange = FirstOptBtnCell _
.Resize(NumberOfQuestions, 1)
myRange.Offset(0, -3).Value = 1
myRange.EntireRow.RowHeight = 38
myRange.Resize(, maxBtns) _
.EntireColumn.ColumnWidth = 9.5
'clean up existing junk
.GroupBoxes.Delete
.OptionButtons.Delete
End With
For Each myCell In myRange
With myCell.Resize(1, maxBtns)
Set grpBox = wks.GroupBoxes.Add _
(Top:=.Top, Left:=.Left, _
Height:=.Height, _
Width:=.Width)
With grpBox
.Caption = ""
.Visible = True 'False
End With
End With
For iCtr = 0 To maxBtns - 1
With myCell.Offset(0, iCtr)
Set optBtn = wks.OptionButtons.Add _
(Top:=.Top, Left:=.Left, _
Height:=.Height, Width:=.Width)
optBtn.Caption = ""
If iCtr = 0 Then
With myCell.Offset(0, -1)
optBtn.LinkedCell _
= .Address(external:=True)
End With
End If
End With
Next iCtr
Next myCell
End Sub
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
Zitat:Bei NumberOfQuestions einfach 37 einzugeben funktioniert ja leider nur bedingt.
Bliebe die Frage, was bei Dir bedingt ist. Ich sehe da kein passendes If
zur anderen Frage:
Code: With myCell.Offset(0, -1)
optBtn.LinkedCell _
= "Tabelle4!" & .Address
Blattname mit Ausrufezeichen vor die Adresse und das externe weglassen.
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• Glorifier
Registriert seit: 24.12.2018
Version(en): 2016
Hallo schauan!
Danke für deine Antwort. Das mit dem Tabellenblatt hätten wir dann schonmal.
Was die Zeilenanzahl angeht: Mit "bedingt" bezog ich mich nicht auf ein dazugehörigen If-befehl. Wollte damit nur sagen, dass es so nicht funktioniert, weil er dann die Füllzeilen an den gewünschten Stellen einfach überschreibt. Vielleicht verstehe ich Dich aber auch einfach nicht.
Wenn Dir auch nicht einfällt, wie man Füllzeilen an bestimmten stellen einbauen kann, wäre es dann als Workaround denkbar, dass wir das Makro dreimal kopieren, jeweils mit unterschiedlichen NumberofQuestions und fixen Positionen im Arbeitsblatt, sodass wir insgesamt vier haben und diese vier dann mit einem extra Makro alle nacheinander durchspulen?
Hoffe, das war jetzt verständlich...
Gruß
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
mein Hinweis bezog sich eigentlich nur darauf, dass Du geschrieben hast, dass die 37 nur bedingt funktionieren. Technisch gesehen ist der Code i.O. und erzeugt Dir dann 37 "Fragezeilen", nur ohne die gewünschten "Füllzeilen"
Da selbige in unregelmäßigen Abständen kommen, wäre nun die Frage, ob Du den Code öfter brauchst oder es eine einmalige Sache ist.
Bei einmalig könntest die die Parameter für die Anzahl Zeilen und die Startzeile einfach korrigieren und den Code nochmal durchlaufen lassen, bis alles passt. Das wollte ich in meiner Antwort nicht extra schreiben
Wenn Du den Code öfter brauchst, könnte man das Sub mit den gewünschten Parametern aus einem anderen Sub heraus aufrufen. Das andere enthält 4 Zeilen aus dem SetupServey und die tust Du dort dort löschen
im Prinzip so - hier mal Life geschrieben:
Code: Sub LosGehts()
Dim FirstOptBtnCell As Range
Dim NumberOfQuestions As Long
Set FirstOptBtnCell = .Range("F5")
NumberOfQuestions = 2
'Aktion aufrufen
Call SetupSurvey(FirstOptBtnCell, NumberOfQuestions)
'naechste Reihe
Set FirstOptBtnCell = .Range("F10")
NumberOfQuestions = 4
'Aktion aufrufen
Call SetupSurvey(FirstOptBtnCell, NumberOfQuestions)
'naechste Reihe ...
End Sub
Sub SetupSurvey(FirstOptBtnCell As Range, NumberOfQuestions As Long)
…
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• Glorifier
Registriert seit: 24.12.2018
Version(en): 2016
HI schauan,
nochmals danke!
"Wenn Du den Code öfter brauchst, könnte man das Sub mit den gewünschten Parametern aus einem anderen Sub heraus aufrufen. Das andere enthält 4 Zeilen aus dem SetupServey und die tust Du dort dort löschen"
Kannst Du mir deinen letzten Satz bitte nochmal erklären. Ich glaube zwar zu verstehen, worauf Du hinaus möchtest, sicher bin ich mir aber nicht. Im Grunde soll ich in deinen Code die Parameter für jeden Zellabschnitt zwischen den Füllzeilen einfügen und den Rest holt er sich aus dem ursprünglichen Sub?
Gruß
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen
Ja, genau so mein ich das. Man könnte jetzt noch alle Parameter in ein Array packen und das in einer Schleife abarbeiten, aber ich denke , so reicht es :17:
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• Glorifier
|