Board logo

標題: [發問] checkbox&optionbutton值問題 [打印本頁]

作者: ayubbs    時間: 2014-12-16 01:20     標題: checkbox&optionbutton值問題

本帖最後由 ayubbs 於 2014-12-16 01:22 編輯

不好意思,因在站內搜尋數小時,實在找不到userform下的checkbox的值的抓取
到textbox中的文章,可能小妹笨拙,只好再向各位先進請教用法

因自已測試時vba碼套用的很亂檔案中即未有附上,想請大家指導用法
版上找的到文章多為sheet下應用,但小妹想將此功能套用於userform下
的textbox下,想請就指導如何抓取選擇後的值的方式。

謝謝大家真的很不好意思,也不夠用心,學了很久一直有很多的地方搞不懂

[attach]19816[/attach]

[attach]19815[/attach]

1.為點選後手動輸入,清除
2.為點選後自動加入
3.為點選後手動加入,清除
4.為點選後自動新增
作者: stillfish00    時間: 2014-12-16 11:06

本帖最後由 stillfish00 於 2014-12-16 11:14 編輯

回復 1# ayubbs
1.
  1. Private Sub CommandButton1_Click()
  2.   Dim s As String, i As Long
  3.   For i = 1 To 4
  4.     With Controls("CheckBox" & i)
  5.       If .Value Then
  6.         s = IIf(s = "", .Caption, s & ";" & .Caption)
  7.       End If
  8.     End With
  9.   Next
  10.   TextBox1.Value = s
  11. End Sub

  12. Private Sub CommandButton2_Click()
  13.   TextBox1.Value = ""
  14. End Sub
複製代碼
2.
  1. Private Sub OptionButton1_Click()
  2.   TextBox2 = OptionButton1.Caption
  3. End Sub
  4. Private Sub OptionButton2_Click()
  5.   TextBox2 = OptionButton2.Caption
  6. End Sub
  7. Private Sub OptionButton3_Click()
  8.   TextBox2 = OptionButton3.Caption
  9. End Sub
複製代碼
3.
  1. Private Sub CommandButton3_Click()
  2.   Dim i As Long
  3.   For i = 4 To 6
  4.     With Controls("OptionButton" & i)
  5.       If .Value Then
  6.         TextBox3.Value = .Caption
  7.         Exit For
  8.       End If
  9.     End With
  10.   Next
  11. End Sub
  12. Private Sub CommandButton4_Click()
  13.   TextBox3.Value = ""
  14. End Sub
複製代碼
4.
  1. Private Sub CheckBox5_Click()
  2.   UpdateTextBox4
  3. End Sub
  4. Private Sub CheckBox6_Click()
  5.   UpdateTextBox4
  6. End Sub
  7. Private Sub CheckBox7_Click()
  8.   UpdateTextBox4
  9. End Sub
  10. Private Sub CheckBox8_Click()
  11.   UpdateTextBox4
  12. End Sub

  13. Private Sub UpdateTextBox4()
  14.   Dim s As String, i As Long
  15.   For i = 5 To 8
  16.     With Controls("CheckBox" & i)
  17.       If .Value Then
  18.         s = IIf(s = "", .Caption, s & ";" & .Caption)
  19.       End If
  20.     End With
  21.   Next
  22.   TextBox4.Value = s
  23. End Sub
複製代碼
P.S.  
點選checkbox有個屬性叫GroupName
ABC 應該設置同一個GroupName
大中小 設置另一個GroupName
作者: ayubbs    時間: 2014-12-17 22:43

回復 2# stillfish00


    謝謝解答解決了使用惑
可否請教第四例這二句語法的意思為想多了解應用

If .Value Then
        s = IIf(s = "", .Caption, s & ";" & .Caption)  


另有測試一法 點選完後自動關閉userform
  1. Private Sub CheckBox5_Click()
  2.   UpdateTextBox4
  3. userform2.hide
  4. End Sub
複製代碼
如果有一堆的CheckBox只能使用手動方式一個一個增加

謝謝
作者: GBKEE    時間: 2014-12-18 06:46

回復 3# ayubbs
一堆的CheckBox可用物件類別模組,寫下共用的程序
作者: ayubbs    時間: 2014-12-23 11:30

回復 2# stillfish00


    大大可否再請教,在測試TEXTBOX中如果沒輸入值時,抓取該LABLE的值,但抓的時候竟只取的
    到LABLE.1的控制項的名稱已使用了.CAPTION可是就無法取得值,想再向大大請教可是語法那裡
不正確

[attach]19908[/attach]

另附檔中有另一COMBOBOX的問題,COMBOBOX是否可有像LISTBOX一樣的選取資料後可將該
列其它資料導出至TEXTBOX中及進行修改OR刪除的動作

[attach]19909[/attach]

謝謝不好意思又提出一堆問題,最近很著迷學習控制項,謝謝大家

[attach]19910[/attach]
作者: ayubbs    時間: 2014-12-23 11:36

回復 4# GBKEE


謝謝G大,小妹的功力還不夠寫出物件類別模組,會持續加油多爬文摸索練習中

[attach]19911[/attach]

像圖中建立群組後對控制項有什麼特別用意,不就不能個別使用了嗎?
作者: stillfish00    時間: 2014-12-27 10:57

回復 5# ayubbs
見附檔,還有是Label不是Lable
[attach]19954[/attach]la
作者: ayubbs    時間: 2014-12-27 12:36

回復 7# stillfish00


    謝謝大大的指導,另於combobox使用中,如清單原始為空時,無法執行
    如表單一開始預建立時都會為無資料時就A欄為空,需修改那部份不造成不
   能判讀,另執行刪除後combobox.list 並不會更新,已刪除資料還是保留在
   list中,且a欄能限制不可輸入相同的資料如 aaa 已存在請重新輸入

謝謝版大   
刪除資料後沒有清空combox及textbox值,我於刪除動作後加上 combbox1 = "" 於刪除後可清空值,但;仍
未解決list更新問題。
Private Sub CommandButton1_Click()
  Dim oFind As Object
  
  With Sheets("Sheet1")
    Set oFind = .Range("A:A").Find(what:=ComboBox1.Value, LookIn:=xlValues, lookat:=xlWhole)
    oFind.EntireRow.Delete
    ComboBox1.Value = ""  End With
End Sub
label 跟 lable 真是奇妙 ^^ 謝謝版大不嗇指導
作者: GBKEE    時間: 2014-12-29 14:56

回復 6# ayubbs

UserForm2
  1. Option Explicit
  2. Dim Rng As Range
  3. Private Sub UserForm_Initialize()
  4.     Set Rng = ThisWorkbook.Worksheets("Sheet1").Range("A1")
  5.     With ComboBox1   '
  6.         .Value = ""
  7.         .ColumnCount = 1
  8.         If Rng <> "" Then
  9.             .List = Rng.CurrentRegion.Value
  10.             .Value = Rng
  11.         Else
  12.             .Clear
  13.         End If
  14.     End With
  15. End Sub
  16. Private Sub ComboBox1_Change()
  17.     Dim AR, i As Integer
  18.     AR = Array(TextBox1, TextBox2, TextBox3)
  19.     With ComboBox1
  20.         If .ListIndex > -1 Then
  21.             For i = 0 To UBound(AR)
  22.                 AR(i).Value = .List(.ListIndex, i + 1)
  23.             Next
  24.             '一堆的的控制項寫不完
  25.            ' TextBox1 = .List(.ListIndex, 1)
  26.            ' TextBox2 = .List(.ListIndex, 2)
  27.            ' TextBox3 = .List(.ListIndex, 3)
  28.         End If
  29.     End With
  30. End Sub
  31. Private Sub CommandButton1_Click() '刪除選擇列
  32.     With ComboBox1
  33.         If .ListIndex > -1 Then
  34.             If MsgBox("刪除選擇列" & .Value, vbYesNo) = vbYes Then
  35.                 Rng.CurrentRegion.Rows(.ListIndex + 1).Delete
  36.                 Set Rng = ThisWorkbook.Worksheets("Sheet1").Range("A1")
  37.                 If Rng <> "" Then
  38.                     .List = Rng.CurrentRegion.Value
  39.                 Else
  40.                     .Clear
  41.                 End If
  42.             End If
  43.         Else
  44.             MsgBox "資料庫 沒有 " & .Value, , "刪除選擇列"
  45.         End If
  46.     End With
  47. End Sub
  48. Private Sub CommandButton2_Click() '新增一列
  49.     Dim AR
  50.     AR = Array(ComboBox1, TextBox1, TextBox2, TextBox3)
  51.     With ComboBox1
  52.         If .ListIndex > -1 Then
  53.             MsgBox "資料庫中已有 " & .Value, , "新增一列"
  54.         ElseIf .ListIndex = -1 Then
  55.             If InStr("," & Join(AR, ",") & ",", ",,") Then
  56.                 MsgBox "資料不全"
  57.             ElseIf MsgBox("新增一列 " & .Value, vbYesNo) = vbYes Then
  58.                 If Rng = "" Then
  59.                      Rng.Resize(, UBound(AR) + 1).Value = AR
  60.                 Else
  61.                     With Rng.CurrentRegion
  62.                         .Cells(.Rows.Count + 1, 1).Resize(, UBound(AR) + 1) = AR
  63.                     End With
  64.                 End If
  65.                 .List = Rng.CurrentRegion.Value
  66.             End If
  67.         End If
  68.     End With
  69. End Sub
  70. Private Sub CommandButton3_Click()  '修改儲存
  71.     Dim Ar1, Ar2
  72.     With ComboBox1
  73.         If .ListIndex > -1 Then
  74.             Ar1 = Array(ComboBox1, TextBox1, TextBox2, TextBox3)
  75.             Ar2 = Application.Transpose(Application.Transpose(Rng.CurrentRegion.Rows(.ListIndex + 1)))
  76.             If InStr("," & Join(Ar1, ",") & ",", ",,") Then
  77.                 MsgBox "資料不全 !!"
  78.             ElseIf Join(Ar1, ",") = Join(Ar2, ",") Then
  79.                 MsgBox Join(Ar1, ",") & vbLf & "資料沒有修改!!"
  80.             ElseIf MsgBox("修改儲存 " & vbLf & Join(Ar1, ","), vbYesNo) = vbYes Then
  81.                 Rng.CurrentRegion.Rows(.ListIndex + 1).Resize(, UBound(Ar1) + 1) = Ar1
  82.                 .List = Rng.CurrentRegion.Value
  83.             End If
  84.         ElseIf .ListIndex = -1 Then
  85.              MsgBox "請選擇 新增一列 按鍵", , "修改儲存"
  86.         End If
  87.     End With
  88. End Sub
複製代碼

作者: ayubbs    時間: 2014-12-30 11:13

回復 9# GBKEE


真的很謝謝GB大大每次幫忙小妹解決問題,實在是很汗顏,學習VBA一段時間了,很多應用都做的不好,
真需要用上時,常常只能求助,買了一堆書想了解應用,但書中的解說實在多數於實際應用時有很大的差異
謝謝版大不厭其煩幫忙解決問題。
其中有一段 不太能了解意思,如下紅字部份

16.Private Sub ComboBox1_Change()

17.    Dim AR, i As Integer

18.    AR = Array(TextBox1, TextBox2, TextBox3)

19.    With ComboBox1

20.        If .ListIndex > -1 Then

21.            For i = 0 To UBound(AR)

22.                AR(i).Value = .List(.ListIndex, i + 1)

23.            Next

24.            '一堆的的控制項寫不完

25.           ' TextBox1 = .List(.ListIndex, 1)     '這幾行不論是註解掉及未註解都不影響正常作業,他的作用為?

26.           ' TextBox2 = .List(.ListIndex, 2)
27.           ' TextBox3 = .List(.ListIndex, 3)
28.        End If

29.    End With

30.End Sub


另實在很不好意思,有一工作上的急需,可否請版大指點如何修改

[attach]19974[/attach]

在分類資料中要重覆輸入的字時無法將資料輸入至資料庫,按下新增後自動清除
資料庫不會新增資料,及LISTBOX.2也不會顯示。
在設定中並未有看過濾重覆項目的地方,不知如何修改能實現功能
比如 原來已有C+於清單2了,要再加一個C+上去同時顯示於清單2上,但其內容有不同只有清單名稱相同
謝謝版大~
  1. Private Sub CommandButton10_Click()
  2.     With UserForm1
  3.         If ListBox1.Text = "" Then
  4.             MsgBox "您還未選定品項喔∼", vbCritical + vbOKOnly, "請輸入"
  5.             .TextBox12.SetFocus
  6.             Exit Sub
  7.         End If
  8.         mycase = Trim(.TextBox12.Text)
  9.         If mycase = "" Then
  10.             MsgBox "請於輸入分類清單欄內輸入要新增分類名稱∼", vbCritical + vbOKOnly, "請輸入"
  11.             .TextBox12.SetFocus
  12.             Exit Sub
  13.         Else
  14.            
  15.             .ListBox2.AddItem mycase
  16.             .TextBox12.Value = ""
  17.             .TextBox12.SetFocus
  18.             .Frame1.Enabled = False
  19.             .Frame3.Enabled = False
  20.             .CommandButton6.Enabled = False
  21.             .CommandButton11.Enabled = False
  22.             .CommandButton12.Enabled = True
  23.         End If
  24.     End With
  25.     Call CommandButton12_Click
  26. End Sub



  27. Private Sub CommandButton12_Click()
  28.     Dim cell As Range, rng As Range
  29.     With UserForm1
  30.         .Frame1.Enabled = True
  31.         .Frame3.Enabled = True
  32.         .CommandButton6.Enabled = True
  33.         .CommandButton6.Enabled = True
  34.         .CommandButton11.Enabled = True
  35.         .CommandButton12.Enabled = True
  36.         myname = .ListBox1.Text
  37.         Set cell = Sheets("資料庫").Columns("A").Find(myname, lookat:=xlWhole)
  38.         If cell Is Nothing Then
  39.             er = Sheets("資料庫").[B65536].End(3).Row + 1
  40.             Sheets("資料庫").Cells(er, 1).Value = .TextBox1.Text
  41.             Sheets("資料庫").Cells(er, 2).Resize(.ListBox2.ListCount, 1) = .ListBox2.List
  42.             .TextBox1.Value = ""
  43.        Else
  44.             r1 = Split(d1(myname), "-")(0)
  45.             r2 = Split(d1(myname), "-")(1)
  46.             Set rng = Sheets("資料庫").Range("B" & r1 & ":B" & r2)
  47.             For i = 0 To .ListBox2.ListCount - 1
  48.                 Set cell = rng.Find(.ListBox2.List(i), lookat:=xlWhole)
  49.                 If cell Is Nothing Then
  50.                     r2 = r2 + 1
  51.                     Sheets("資料庫").Rows(r2).EntireRow.Insert
  52.                     Sheets("資料庫").Cells(r2, 2).Value = .ListBox2.List(i)
  53.                 End If
  54.             Next i
  55.         End If
  56.         Call UpdateBox
  57.         .CommandButton12.Enabled = False
  58.     End With
  59. End Sub
複製代碼
[attach]19975[/attach][attach]19975[/attach]
作者: ayubbs    時間: 2015-1-2 00:07

回復 9# GBKEE

謝謝版大

以下檔案供版大參考...因涉及工作隱私所以有設密碼~已私訊版大

謝謝~

各位先進老師不好意思先不要載附件~

[attach]19997[/attach]




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)