更新单元格值

时间:2015-11-05 00:44:44

标签: excel vba excel-vba

我想要一个应用程序,这样当我双击某个单元格时,UserForm应弹出,然后有两个TextBox,我可以在其中键入问题的标题及其描述。输入问题和描述并单击SaveButton后,我希望显示问题的标题,并以我最初选择的整个单元格中指出。

现在,当我双击单元格时,UserForm会弹出它应该的样子。但是,当我输入问题的标题和说明并点击" save"然后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

SaveFutton的UserForm中的代码:

Private Sub SaveButton_Click()


    Application.ScreenUpdating = False





                ActiveCell.Value = Me.title.Value
                ActiveCell.Value = Me.description_problem.Value

Unload task_form

End Sub 

另外,我有一些动态的工作表。现在,我将下面的代码粘贴到当前打开的工作表中。但是,我最初不知道会有多少工作表。在图像中,我将代码粘贴到#34; Sheet1"中,但是,当我执行我的代码时,可以创建十个工作表,我希望这个函数适用于每个工作表。

enter image description here

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



           Dim Calrange As Range
.
.
.
.

1 个答案:

答案 0 :(得分:0)

用户形式很棘手。

处理此问题的最佳方法是使用task_form.hide而不是unload task_form,然后在task_form.Show之后卸载它。这样做意味着您不必依赖ActiveCell,您可以使用doubleclick事件中的Target,如下所示:

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返回。

要回答有关在工作表之间移动代码的其他问题,如果右键单击工作表并以这种方式复制,代码也会被复制,因此您可以设置包含代码的模板工作表并复制该代码需要时。

或者,您可以使用工作簿级别事件,它将捕获任何工作表上的任何双击:

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

End Sub

这是在" ThisWorkbook"模块。请记住,这将在工作表级代码之后运行,因此将代码放在工作表模块或工作簿模块中,但不能同时在两者中。

希望这有帮助!