【问题标题】:Worsksheet behaving as if it is grouped, when it isn't工作表表现得好像它是分组的,当它不是
【发布时间】:2016-04-07 18:20:22
【问题描述】:
  1. Worksheet(1) 是受保护的输入表,其中只有某些单元格未解锁。此工作表上有一个调用用户表单的按钮。
  2. 用户窗体具有用于输入值的各种文本框和组合框等,然后将输入的数据放入第二个工作表 (2)。
  3. Worksheet(2) 根据输入到用户表单的值锁定和解锁某些单元格,然后受到保护。

问题是,当上述操作完成后,使用 Worksheet(2) 中的箭头键选择 Worksheet(1) 中未锁定的单元格地址,并完全忽略它应该选择的未锁定单元格!

Worksheet(1) 中的一些未锁定单元格存在“更改”事件,但是当在 Worksheet(2) 中编辑这些相同的单元格时,Worksheet(1) 事件会触发!

就好像两个工作表已被分组或合并,Worksheet(1) 的设置覆盖了 Worksheet(2) 的设置。

当从 Worksheet(2) 调用用户表单时,一切正常!我也需要用户表单才能从 Worksheet(1) 工作。

我已经在另一台使用 Excel 2013 和 2016 的计算机上测试了该文件,但我仍然遇到这种奇怪的行为。

按钮的命令是:

userform.show

初始化代码为:

Private Sub UserForm_Initialize()
Dim SYear As Long
Dim LYear As Long
Dim FWeek As Long
SYear = Evaluate("SetYear")
If (Year(Date) Mod 4) Then
    LYear = 52
Else
    LYear = 53
End If
FWeek = Val(SYear & LYear)
Sheets("Data").Range("AX1").Value = Evaluate("RetailWeek")
Sheets("Data").Range("AX2").Value = FWeek
WeekSel.List = Array("Week 1", "Current Week")
Channel.List = Array("Company", "Franchise", "eComm")
Me.Top = Application.Top + 20
Me.Left = Application.Left + 200
Me.WFrom.RowSource = "WeekFrom"
Me.WTo.RowSource = "WeekTo"
End Sub

【问题讨论】:

  • 我建议您发布加载用户表单并填充单元格的代码,或者最好发布文件的副本。
  • 我还应该提到,使用 ctrl-pgup 或 ctrl-pgdn 在其他工作表之间切换通常会“重置” Worksheet(2),就像使用分组工作表一样,并且解锁的单元格变得可选择再次。
  • 如果你使用Application.ScreenUpdating = False,你最后是否也有Application.ScreenUpdating = True
  • 嗨@EganWolf,是的,我有,每当我使用它时。
  • 您是在无模式显示此表单,还是在使用箭头键之前将其关闭?我怀疑这是一个 SDI 错误。

标签: vba excel


【解决方案1】:

我将一整段代码从用户表单模块中移出,并将其放入普通模块中。用户表单还从 Worksheet (1) 读取了很多值并将其复制到 Worksheet(2)。我将这些值转移到第三个工作表,然后在关闭用户窗体后转移到工作表 (2),现在它似乎工作正常。

手指、脚趾和眼睛交叉!

【讨论】:

    猜你喜欢
    • 2018-02-22
    • 1970-01-01
    • 2012-03-24
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-12
    相关资源
    最近更新 更多