更新单元格值

更新单元格值

问题描述:

我想要一个应用程序,以便当我双击某个单元格时,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”中,但是,当我执行我的代码时,可以创建十个工作表,并且我希望这个函数能够为它们中的每一个工作。

enter image description here

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean) 



      Dim Calrange As Range 
. 
. 
. 
. 
+0

'Application.ScreenUpdating = True'在哪里?你需要再次打开它... –

+0

@DirkReichel对不起,我添加它不知道它是什么。我是VBA新手。我删除了它,因为我认为它根本不影响功能。 – Jack

+0

Application.ScreenUpdating设置Excel是否更新(重绘)屏幕。如果在写入宏中的许多单元格之前将其禁用,则会显着加速代码,但之后需要重新启用它,否则屏幕将以奇怪的方式表现给用户。 –

用户窗体是棘手。

处理此问题的最佳方法是使用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上的任何工作。请记住,这将在工作表级代码之后运行,因此请将代码放在工作表模块或工作簿模块中,但不能同时放在两者中。

希望这会有所帮助!