我想要一个应用程序,这样当我双击某个单元格时,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"中,但是,当我执行我的代码时,可以创建十个工作表,我希望这个函数适用于每个工作表。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
Dim Calrange As Range
.
.
.
.
答案 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"模块。请记住,这将在工作表级代码之后运行,因此将代码放在工作表模块或工作簿模块中,但不能同时在两者中。
希望这有帮助!