我有5到6個複選框(活動x)在一排,我有50行。只允許一個複選框連續可打?
有沒有辦法讓一個複選框可以連續打勾(只有一個答案是1,2,3,4或5)?
任何簡單的vba來做到這一點,我不想寫一個代碼到每個複選框。
我有5到6個複選框(活動x)在一排,我有50行。只允許一個複選框連續可打?
有沒有辦法讓一個複選框可以連續打勾(只有一個答案是1,2,3,4或5)?
任何簡單的vba來做到這一點,我不想寫一個代碼到每個複選框。
是的,它可以做到但爲什麼使用ActiveX控件和如此多的額外編碼?爲什麼沒有數據驗證列表?看到這個截圖
如果你還想要一個VBA解決方案,那麼我會建議使用表單控件和使用他們的ALT Text
進行配置。我INFACT在展示瞭如何使用使用組相似的控制SO職位之一Alt Text
編輯:
如果你想下去VBA路那麼這裏是另一種選擇,其中DOESN'T
使用任何FORM/Active X控件
按照下圖所示排列工作表。
現在粘貼此代碼在表代碼區
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.CountLarge > 1 Then Exit Sub
If Not Intersect(Target, Columns(2)) Is Nothing Then ClearCells Target.Row, 2
If Not Intersect(Target, Columns(4)) Is Nothing Then ClearCells Target.Row, 4
If Not Intersect(Target, Columns(6)) Is Nothing Then ClearCells Target.Row, 6
If Not Intersect(Target, Columns(8)) Is Nothing Then ClearCells Target.Row, 8
If Not Intersect(Target, Columns(10)) Is Nothing Then ClearCells Target.Row, 10
End Sub
Sub ClearCells(r As Long, c As Long)
For i = 2 To 10 Step 2
If i <> c Then
With Cells(r, i)
.Borders(xlDiagonalDown).LineStyle = xlNone
.Borders(xlDiagonalUp).LineStyle = xlNone
.ClearContents
End With
End If
Next i
With Cells(r, c)
With .Borders(xlDiagonalDown)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With .Borders(xlDiagonalUp)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
End With
End Sub
現在所有的用戶所要做的就是選擇任何灰小區的,這將是Crossed Out
。另外,如果在同一行中有任何其他交叉,那麼它將被刪除。
你能分享這篇文章嗎?我從來不知道你可以僅基於替代文本對控件進行分組。 – user2140261
仍試圖找到它,但你不喜歡使用數據驗證的想法? –
我不能使用數據驗證,它是一種從1到5級反饋問題和評級,因此更容易勾選相應的數據。問題是所有的複選框都可以打勾。 – user2703472
你有沒有考慮各行而不是使用組框5-6選項按鈕?組框確保只有一個選項按鈕被選中... –
您應該在組框中使用「選項按鈕」。我的anser [這裏](http://stackoverflow.com/questions/17490084/optionbutton-index-issue/17491835#17491835)解釋了你如何得到這個,這對用戶來說也更直觀,至少與我一樣,當我看到複選框時,我假設允許多個選擇,當我看到選項我知道我只能選擇一個。同樣,在這個路由中,一旦你設置了這些組,'Option Buttons'的默認動作自己完成剩下的工作,就不需要額外的代碼。 – user2140261