【问题标题】:How to update Checkboxes state from cell values如何从单元格值更新复选框状态
【发布时间】:2014-03-10 00:49:00
【问题描述】:

我一直在搜索,但找不到任何相关信息:我正在为办公室编写一个基本的 VBA 表单,以简化一些程序,因为此文件是共享的,但一次只能由一个人打开,我正在尝试让我的表单加载存储在某个 Excel 文件中的所有数据。除了从单元格B2:B13 读取活动工作表中的值以更新复选框(三态)状态之外,我已经能够做所有事情......对此有什么帮助吗?我有一些与复选框工作(几乎相同)的文本框,并且可以弄清楚它们...但是复选框需要检查状态来更改状态...

具体问题:我如何更新ICheckBox1,通过ICheckbox12,取决于单元格B2:B13 的值,在活动工作表中取决于ComboBox 中选定的索引...。我有这个文本框和完美的工作:

Private Sub ComboBoxCustomers_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBoxCustomers.SelectedIndexChanged 
  oXLSheet = oXLBook.Worksheets(ComboBoxCustomers.SelectedIndex + 1) 

  For i As Integer = 2 To 13
       Me.TabPage1.Controls("ITextBox" & (i - 1)).Text = oXLSheet.Cells(i, 1).value'("ICheckBox" & (i - 1)).CheckState = oXLSheet.Cells(i, 2).value 
  Next      
End Sub 

评论部分是我想要弄清楚的部分......谢谢!

【问题讨论】:

  • 1 如果只有一个用户在任何给定时间点打开文件,那么我建议不要将您的文件保留为共享 :)。共享文件往往会很快损坏。 2 关于复选框,B2:B13 范围内的值是多少?
  • 另外,您似乎在 VB.Net 中执行此操作?
  • 好的,我将尝试仅通过发送文件来共享它。 B2:B13 存储值“0,1,2”取决于它应该具有的检查状态。

标签: vb.net excel checkbox


【解决方案1】:

您尝试使用的代码是正确的。 您只需在电子表格列中存储 0、1、2,视情况而定。 使用以下替换:

  • 未选中 = 0
  • 已检查 = 1
  • 不确定 = 2

-

Private Sub ComboBoxCustomers_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles ComboBoxCustomers.SelectedIndexChanged
    oXLSheet = oXLBook.Worksheets(ComboBoxCustomers.SelectedIndex + 1)

    For i As Integer = 2 To 13
        CType(Me.TabPage1.Controls("ICheckBox" & (i - 1)), System.Windows.Forms.CheckBox).CheckState = oXLSheet.Cells(i, 2).value
    Next
End Sub

【讨论】:

  • 如果我写 Me.TabPage1.Controls("ICheckBox" & (i - 1)).CheckState 有一条错误消息告诉 Checkstate 不是 System.Windows.Forms.Control 的成员...
  • 您需要将其类型转换为 CheckBox 以让编译器知道它的类型。我刚刚更新了上面的代码。
  • 用提供的代码修改对其进行了测试,现在出现了这个错误:发生了“System.InvalidCastException”类型的未处理异常。 Object'System.Windows.Forms.CheckBox' cannot be converted to 'Microsoft.Office.Interop.Excel.CheckBox'. 这是因为控件在 TabControler 内吗?还是因为它们是从控件工具箱中添加的?
  • OK.. 我不知道您的 CheckBox 是什么类型。所以在这种情况下,只需尝试将其类型转换为Microsoft.Office.Interop.Excel.CheckBox 而不是CheckBox。再次更新了我上面的代码。
  • 对不起,我失去了互联网连接的延迟......很奇怪,我尝试使用提供的代码,但代码错误是相同的。 Object'System.Windows.Forms.CheckBox' cannot be converted to 'Microsoft.Office.Interop.Excel.CheckBox'.
猜你喜欢
  • 1970-01-01
  • 2012-12-09
  • 1970-01-01
  • 1970-01-01
  • 2015-04-28
  • 2014-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多