2015-05-30 122 views
0

我想添加許多選項按鈕到excel 工作表(而不是一個VBA形式),並希望按行分組。結果應該是這個樣子:
enter image description here如何使用VBA將選項按鈕添加到Excel 2010表單中?

這裏是我使用至今代碼:

For d = 1 To 31 
      Set checkboxKrankCell = Range("H" + Trim(Str(d))) 
      Set checkboxUrlaubCell = Range("I" + Trim(Str(d))) 
      Set checkboxJazCell = Range("J" + Trim(Str(d))) 
      groupWidth = checkboxKrankCell.Width + checkboxUrlaubCell.Width + checkboxJazCell.Width 
      Set groupBoxOptionButtons = ActiveSheet.GroupBoxes.Add(checkboxKrankCell.Left - 1, checkboxKrankCell.Top - 2, groupWidth + 1, checkboxKrankCell.Height) 
      With groupBoxOptionButtons 
       .Name = "GroupBox_" + Trim(Str(d)) 
       .Caption = "" 
      End With 
      Set checkboxKrank = ActiveSheet.OptionButtons.Add(checkboxKrankCell.Left, checkboxKrankCell.Top - 1, checkboxKrankCell.Width, checkboxKrankCell.Height) 
      With checkboxKrank 
       .Caption = "" 
      End With 
    #1   checkboxKrank.GroupBox = groupBoxOptionButtons 
      Set checkboxUrlaub = ActiveSheet.OptionButtons.Add(checkboxUrlaubCell.Left, checkboxUrlaubCell.Top - 1, checkboxUrlaubCell.Width, checkboxUrlaubCell.Height) 
      With checkboxUrlaub 
       .Caption = "" 
      End With 
      Set checkboxJaz = ActiveSheet.OptionButtons.Add(checkboxJazCell.Left, checkboxJazCell.Top - 1, checkboxJazCell.Width, checkboxJazCell.Height) 
      With checkboxJaz 
       .Caption = "" 
#2   .GroupBox = groupBoxOptionButtons 
      End With 
     Next d 

我希望通過設置選項按鈕分配給組當前行GroupBox屬性(請參閱#1或#2)。 但這兩種方法只給了我一個錯誤,說

'該對象不支持屬性或方法'。

任何幫助或提示,歡迎;-)
基於從 SNB尖端我已經修改了我的功能是這樣的:

Sub AddOptionButtons() 
    ActiveSheet.OptionButtons.Delete 
    For d = 1 To 31 
     Set checkboxKrankCell = Range("H" + Trim(Str(d + 4))) 
     Set checkboxUrlaubCell = Range("I" + Trim(Str(d + 4))) 
     Set checkboxJazCell = Range("J" + Trim(Str(d + 4))) 
     option1Name = "Krank_" + Trim(Str(d)) 
     option2Name = "Urlaub_" + Trim(Str(d)) 
     option3Name = "Jaz_" + Trim(Str(d)) 
     Set checkboxKrank = ActiveSheet.OptionButtons.Add(checkboxKrankCell.Left, checkboxKrankCell.Top - 1, checkboxKrankCell.Width, checkboxKrankCell.Height) 
     With checkboxKrank 
      .Caption = "" 
      .Name = option1Name 
     End With 
     Set checkboxUrlaub = ActiveSheet.OptionButtons.Add(checkboxUrlaubCell.Left, checkboxUrlaubCell.Top - 1, checkboxUrlaubCell.Width, checkboxUrlaubCell.Height) 
     With checkboxUrlaub 
      .Caption = "" 
      .Name = option2Name 
     End With 
     Set checkboxJaz = ActiveSheet.OptionButtons.Add(checkboxJazCell.Left, checkboxJazCell.Top - 1, checkboxJazCell.Width, checkboxJazCell.Height) 
     With checkboxJaz 
      .Caption = "" 
      .Name = option3Name 
     End With 
     ActiveSheet.Shapes.Range(Array(option1Name, option2Name, option3Name)).Group 
    Next d 
End Sub 


我不使用形狀得到任何錯誤.Range(...)。集團。 但是仍然從表單上的所有選項按鈕都是互斥的。
似乎分組在這裏不起作用。

回答

0

我會使用:

Sub M_snb() 
    ReDim sn(2) 

    For j = 1 To 2 
    For jj = 1 To 3 
    With Sheet1.OptionButtons.Add(Cells(j, jj).Left, Cells(j, jj).Top - 1, Cells(j, jj).Width, Cells(j, jj).Height) 
    sn(jj - 1) = .Name 
    End With 
    Next 
    Sheet1.Shapes.Range(sn).Group 
    Next 
End Sub 
1

嘗試在一個空的工作簿下面的代碼。它會給你一個選項,每行只選擇一個選項按鈕,這是你想要的,據我所知(我也創建了一個鏈接單元格引用,以防萬一你想採取進一步的行動,給出的選擇用戶):

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 p As Range 
    Dim i As Integer 

    ActiveSheet.OptionButtons.Delete 
    ActiveSheet.GroupBoxes.Delete 
    For i = 5 To 35 Step 1 
     Set t = ActiveSheet.Range(Cells(i, 8), Cells(i, 8)) 
     Set s = ActiveSheet.Range(Cells(i, 9), Cells(i, 9)) 
     Set p = ActiveSheet.Range(Cells(i, 10), Cells(i, 10)) 
     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 btn3 = ActiveSheet.OptionButtons.Add(p.Left, p.Top, p.Width, p.Height) 
     Set grbox = ActiveSheet.GroupBoxes.Add(t.Left, t.Top, t.Width + 100, t.Height) 
     With btn1 
      .Caption = "" 
      .Display3DShading = True 
      .LinkedCell = "M" & i 
     End With 

     With btn2 
      .Caption = "" 
      .Display3DShading = True 
     End With 

     With btn3 
      .Caption = "" 
      .Display3DShading = True 
     End With 

     With grbox 
      .Caption = "" 
      .Visible = False 
     End With 
    Next i 
End Sub 
相關問題