Excel VBA 用户窗体打开时读取当前值

Excel VBA Userform read current values when opening

我正在尝试为工作表的 hiding/showing 个不同列创建一个用户表单。

所以我制作了一个按钮,使用以下代码打开用户窗体(称为 'hider'):

Private Sub CommandButton1_Click()
Hider.Show
End Sub

用户表单当前包含两个复选框,它们使用以下方法隐藏所选列:

Private Sub Week3_Click()
Range("N:Q").Columns.Hidden = Not Week3
End Sub

因此,如果复选框 'checked' 显示列,如果 'unchecked' 列隐藏,这部分工作,除了每次打开用户窗体时它都会将复选框重置为其原始状态'unchecked',而列保持隐藏(没关系)。

所以我的问题是:

如何将用户表单中的复选框同步到列的当前活动值?我正在考虑在用户窗体上制作一个同步按钮或​​在打开用户窗体时读取所有当前值的操作,但我无法让它工作。

如果我正确理解您的问题(“...或在打开用户窗体时读取所有当前值的操作”),只需在用户窗体代码模块中使用以下代码在打开时同步您的复选框:

Private Sub UserForm_Initialize()

'Me.Week3.Value = IIf(ActiveSheet.Range("N:Q").Columns.Hidden = True, False, True)
Me.Week3.Value = Not ActiveSheet.Range("N:Q").Columns.Hidden  ' simplified due to comment thx Mathieu Guindon

' ...
End Sub