2012-02-29 40 views
1

我正在從excel的標準化表單中提取數據。有一個表單控件複選框,我需要的狀態。顯然獲得這個的唯一方法是從單元鏈接中將值放入單元格中。問題是,把這個表單放在一起的人不會設置單元格鏈接。有沒有辦法在運行時使用VBA來做到這一點。我必須經歷許多這些形式,所以我試圖避免手動進行。在運行時爲表單複選框設置單元格鏈接

+0

出了什麼問題'frmTest.Checkbox1。價值?除非此控件位於工作表上,否則在這種情況下,您是否知道複選框的名稱? +1 Reafidy - 花幾分鐘時間回顧過去的問題並接受一些答案(或者解釋爲什麼他們不適合你) – 2012-02-29 21:06:58

+0

Tim,控件在工作表上。複選框的名稱是「複選框1」。 – 2012-03-02 19:51:24

回答

0

我想你是指一個放置在工作表上的窗體複選框控件,在這種情況下,你可以在不設置單元鏈接的情況下獲得控件的狀態。就像這樣:

Sub HTH() 
    Dim iLoop As Integer  

    '// Get value of check box by its index 
    MsgBox (GetCheckBoxState(1)) 

    '// Get value of check box by its name 
    MsgBox (GetCheckBoxState("Check Box 1")) 

    '// Loop through all checkboxes and get values 
    For iLoop = 1 To ActiveSheet.CheckBoxes.Count 
     MsgBox (GetCheckBoxState(iLoop)) 
    Next 

End Sub 
Function GetCheckBoxState(vCheckBox As Variant) As String 
    Select Case ActiveSheet.CheckBoxes(vCheckBox).Value 
     Case xlOn 
      GetCheckBoxState = "Checked" 
     Case xlOff 
      GetCheckBoxState = "UnChecked" 
     Case xlMixed 
      GetCheckBoxState = "Mixed" 
    End Select 
End Function 

如果你指的是在一個窗體複選框控件然後蒂姆指出,它應該是類似的情況:

MsgBox (UserForm1.CheckBox1.Value) 
+0

這沒有辦法。 Select Case拋出一個應用程序定義或對象定義的錯誤。在調試器中,無論是否選中該框,vCheckBox的值是-4146。 – 2012-03-02 19:50:02

+0

你還需要幫助嗎? – Reafidy 2012-03-28 02:25:43

+0

它看起來像使用的複選框應該鏈接到單元格以保存其值。這從來沒有發生過,所以我不知道是否可以做任何事情。目前這已經成爲後遺症,但我需要某種解決方案。 – 2012-04-04 13:35:32

相關問題