有一段时间以来,我一直在努力做到这一点,但尽管我通过互联网搜索进行了彻底的搜索,但答案却让我不知所措。 我在VBA Excel中创建了一个userForm,其中包含一些文本框和复选框。这些值将发送到Excel文件中的工作表。复选框表示类别,因此可以选择多个选项。在将值发送到工作表之前,该值将转换为true =“x”和false =“”。
If userForm.checkbox1.Value = True Then
ws.Rows.Cells(row, 9).Value = "X"
Else
ws.Rows.Cells(row, 9).Value = ""
End If
使用几乎相同的userForm可以检索和编辑工作表中放置的信息。 此表单有一个行选择框,可以使用该行选择所需的行,并且相应的数据填充用户表单。 “x”被翻译成这样:
If ws1.Rows.Cells(row, 9).Value = "X" Then
userFormedit.checkbox1.Value = True
Else
userFormedit.checkbox1.Value = False
End If
问题是所选的复选框显示所需的值但为灰色。 将信息发送回工作表时,不会“看到”这些值。 因此,在工作表上,这些值消失了。一种选择是再次重新检查所有方框。 这不是我想要的,因为很多人都会使用这种形式,这将是耗时且不切实际的。 有没有办法激活/启用复选框?
答案 0 :(得分:1)
您应该考虑从_Click()
中的用户表单发送到表格,并将表格加载到_Activate
子表单中,例如
Private Sub CheckBox1_Click()
If CheckBox1.Value Then
[A1] = "X"
Else
[A1] = ""
End If
End Sub
Private Sub UserForm_Activate()
If [A1] = "X" Then
Me.CheckBox1 = True
Else
Me.CheckBox1 = False
End If
End Sub
如果复选框显示为灰色,原因可能是它被相同或另一段代码或元素的属性窗口(CheckBox1.Enabled = False
)禁用。
还要注意Excel并不是真正的多用户友好型。一旦多个用户打开了相同的Excel,它就会驻留在他们的PC内存中,除非他们正在关闭,否则其他人的变化是不可见的。重新打开文件。