更新单元格值
我想要一个应用程序,以便当我双击某个单元格时,UserForm应该弹出,然后有两个TextBoxes,我可以在其中输入问题的标题及其描述。在输入问题和描述并单击SaveButton后,我想要显示问题的标题,并在最初选择的整个单元格中指出。更新单元格值
现在,当我双击单元格时,用户窗体弹出应有的样子。但是,当我键入问题的标题和说明并单击“保存”时,UserForm将保持打开状态,我无法关闭它。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
Dim Calrange As Range
Dim Cell As Range
Set Calrange = Range("A4:G12")
Cancel = True
For Each Cell In Calrange
task_form.Show
Next
End Sub
而且用户窗体为SaveButton里面的代码:
Private Sub SaveButton_Click()
Application.ScreenUpdating = False
ActiveCell.Value = Me.title.Value
ActiveCell.Value = Me.description_problem.Value
Unload task_form
End Sub
另外,我有工作表的动态数量。现在,我将下面的代码粘贴到当前打开的工作表中。但是,我不知道最初会有多少工作表。在图像中,我将代码粘贴到“Sheet1”中,但是,当我执行我的代码时,可以创建十个工作表,并且我希望这个函数能够为它们中的每一个工作。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
Dim Calrange As Range
.
.
.
.
用户窗体是棘手。
处理此问题的最佳方法是使用task_form.hide
而不是unload task_form
,然后在task_form.Show
之后将其卸载。这样做,这样意味着你不必依靠ActiveCell
,您可以使用目标从双击事件是这样的:
task_form.Show
Target.Value = Me.title.Value
Target.Value = Me.description_problem.Value
unload task_form
这将意味着Target.Value被设置为标题的值,然后是用description_problem的值覆盖,我不认为你想要的。
这样可能会更好:
task_form.Show
Target.Value = Me.title.Value & vblf & Me.description_problem.Value
unload task_form
vblf
插入两个语句之间carrage回报。
要回答您关于在工作表之间移动代码的其他问题,如果您右键单击工作表并将其以复制方式复制,代码也会被复制,因此您可以设置一个模板工作表,其中包含代码并复制当需要时。该“的ThisWorkbook”模块中
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
End Sub
这就是:
或者,你可以使用一个工作簿级事件,该事件将捕获任何DoubleClick上的任何工作。请记住,这将在工作表级代码之后运行,因此请将代码放在工作表模块或工作簿模块中,但不能同时放在两者中。
希望这会有所帮助!
'Application.ScreenUpdating = True'在哪里?你需要再次打开它... –
@DirkReichel对不起,我添加它不知道它是什么。我是VBA新手。我删除了它,因为我认为它根本不影响功能。 – Jack
Application.ScreenUpdating设置Excel是否更新(重绘)屏幕。如果在写入宏中的许多单元格之前将其禁用,则会显着加速代码,但之后需要重新启用它,否则屏幕将以奇怪的方式表现给用户。 –