Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema OptionButton
BildScreenshot zu OptionButton OptionButton-Seite mit Beispielarbeitsmappe aufrufen

OptionButton limit?

Betrifft: OptionButton limit? von: kreimer
Geschrieben am: 11.08.2014 12:46:26

Beim kopieren von Worksheets werden die OptionButtons nicht übernommen bzw. sieht es so aus als würden sie im Entwurfsmodus beleiben. Um den Fehler zu reproduzieren hab ich ein Worksheet mit 10 OptionsButtons angelegt und dieses mit einem Makro kopiert. Beim ersten Aufruf des Makros können ca. 70 Sheets angelegt werden (Makro stürzt ab, da dem Button kein GroupName zugeordnet werden kann). Wenn ich alle Sheets wieder lösche und das Makro nochmal aufrufe können nur mehr 25 Sheets angelegt werden (bleibt dann in weiterer Folge ziemlich konstant. (Windows 7, Excel 2013 32Bit)

https://www.herber.de/bbs/user/92014.xlsm

Sub CopySheets()
    Dim i, j As Integer
    
   For i = 2 To 255
     
      Application.StatusBar = "Create POS" & i & " ..."
      Debug.Print "Create POS" & i & " ..."
      
      Pos1.Copy Before:=Pos1
      
      Sheets("Pos1 (2)").Name = "Pos" & i
      Sheets("Pos" & i).OptionButton1.GroupName = "A" & i
      Sheets("Pos" & i).OptionButton2.GroupName = "A" & i
      Sheets("Pos" & i).OptionButton3.GroupName = "A" & i
      
      Sheets("Pos" & i).OptionButton4.GroupName = "B" & i
      Sheets("Pos" & i).OptionButton5.GroupName = "B" & i
      Sheets("Pos" & i).OptionButton6.GroupName = "B" & i
      
      Sheets("Pos" & i).OptionButton7.GroupName = "C" & i
      Sheets("Pos" & i).OptionButton8.GroupName = "C" & i
      Sheets("Pos" & i).OptionButton9.GroupName = "C" & i
      Sheets("Pos" & i).OptionButton10.GroupName = "C" & i
   Next
   
End Sub

Sub DelSheet()
    Dim ws As Worksheet
    
    Application.DisplayAlerts = False
    
    For Each ws In ActiveWorkbook.Worksheets
        Debug.Print ws.Name
        If ws.Name = "Pos1" Then
        Else
            ws.Delete
        End If
    Next
    
    Application.DisplayAlerts = True
        
End Sub

  

Betrifft: AW: OptionButton limit? von: Daniel
Geschrieben am: 11.08.2014 13:33:03

Hi
könnte mir schon vorstellen, dass hier ein Speicherplatzproblem vorliegt.
diese Objekte sind ja nicht ganz ohne.

Workarounds wären:
- anstelle jeder Optionbuttongruppe eine Listbox oder Combobox verwenden.
das reduziert die Anzahl der benötgten Objekte und du musst auch keine Gruppierung vornehmen.
- über eine entsprechende Programmierung des Doppelklickevents kannst du auch normale Zellen zu Optionbuttons umfunktionieren. Das Doppelklickevent kann auch im Modul "DieseArbeitsmappe" erstellt werden, so dass es dann für alle Blätter gilt (dann brauchst du im Code wirklich nur die Sheets zu kopieren)

ob die zweite Variante funktioniert hängt vom Aufbau deiner Blätter, aber diese Variante ist die diejenige mit dem geringsten Resourcenbedarf.

Gruß Daniel


  

Betrifft: AW: OptionButton limit? von: kreimer
Geschrieben am: 11.08.2014 16:38:03

Danke für die Antwort, aber ein Workaround nutzt mir nicht viel. Es geht um ein "altes" Excel Tool welches sehr stark in Verwendung ist. Bis Dato hat es immer funktioniert (d.h. vor Office 2013). In älteren Excel Versionen können bis zu 2000 Buttons ohne Probleme angelegt werden. Mein Tool war nur ein Proof of concept um die Grenzen auszuloten.


  

Betrifft: AW: OptionButton limit? von: Daniel
Geschrieben am: 11.08.2014 16:58:15

Hi
Informationen zu den Limits von Excel und VBA findest du hier:
http://www.xlam.ch/xlimits/index.htm
da sollte irgendwo aufgelistet sein, wieviele Buttons deine Version verträgt und wovon das abhängt.
bei mir (Excel 2010) läuft das Makro bis c.a. 230 neuen Blättern.

Gruß Daniel


  

Betrifft: AW: OptionButton limit? von: Ewald
Geschrieben am: 12.08.2014 12:46:37

Hallo,

wenn es nur 25 Tabellen sind,bei der in der letzten Tabelle die Optionsbutton scheinbar im Entwurfsmodus sind, so könnte es die Office-Zwischenablage sein.
Deaktiviere in den Optionen "Sammeln ohne Anzeige der Office-Zwischenablage"

Wenn du in Pos1 die Gruppen der Optionsbutton setzt,brauchst du die auch nicht erneut zu setzen. Gruppen gelten immer für eine Tabelle und können dann in einer anderen Tabelle auch gleich sein.

Mit folgendem einfachen Code lassen sich 200 Tabellen problemlos erstellen.

Sub Copy()
Dim i As Long
For i = 2 To 200
    Sheets("Pos1").Copy Before:=Sheets("Pos1")
    ActiveSheet.Name = "Pos" & i
Next
End Sub
Da du 2013 hast,solltest du auch mal schauen ob du auch das neueste Update draufhast,da gab es einige Probleme die MS behoben hat.

Gruß Ewald


 

Beiträge aus den Excel-Beispielen zum Thema "OptionButton limit?"