我有一个Worksheet_BeforeDoubleClick事件,在目标单元格中打开一个列表框.我被要求通过按钮提供相同的功能,而不是(或除了)双击.
在我输入的按钮的Click事件中:
Call Worksheet_BeforeDoubleClick(Selection,true)
Run Code Online (Sandbox Code Playgroud)
...所以按钮只需"双击"单元格.它似乎运作良好,但在我开始在整个项目中使用这种技术之前,我想知道是否存在我应该注意的陷阱.
从另一个事件或标准代码模块调用事件时,最佳做法是什么?
在 Windows 资源管理器中为文件分配标签很容易。(在我的例子中,Windows 7 中的 JPEG 文件)。但是,我想在 VBA 程序中执行此操作。我可以通过 VBA 运行 Windows 命令行,所以我的问题是:
有没有办法使用命令行(在 Windows 7 或更高版本中)为文件分配标签?
在我的 VBA 程序中,我需要运行应用程序“Skitch”并使用它打开一个 JPEG 文件。这是我一直在使用的命令:
ReturnValue = Shell("C:\Program Files (x86)\Evernote\Skitch\Skitch.exe " & """" & aPic & """", 1)
Run Code Online (Sandbox Code Playgroud)
...其中“aPic”是路径和文件名。
经过一些试验,我想我需要像在提升的命令窗口中一样运行命令(换句话说,以“管理员身份”运行它)。是否可以提升运行 Shell?
如果这是不可能的:如果我理解正确,使用 ShellExecute 而不是 Shell 将自动提升命令。但我对它不太熟悉。有人可以告诉我如何使用 ShellExecute 运行我的命令吗?(顺便说一句,我知道 ShellExecute 适合运行与文件类型相关的命令,但在此用户的计算机上 *.jpg 可能不会与 Skitch 相关联。)
谢谢。
在寻找一种在用户表单上模拟可填充网格的方法时,我在 Excel 先生网站上发现了这一点:
Dim Grid(1 To 10, 1 To 5) As MSForms.TextBox
Private Sub UserForm_Initialize()
Dim x As Long
Dim y As Long
For x = 1 To 10
For y = 1 To 5
Set Grid(x, y) = Me.Controls.Add("Forms.Textbox.1")
With Grid(x, y)
.Width = 50
.Height = 20
.Left = y * .Width
.Top = x * .Height
.SpecialEffect = fmSpecialEffectFlat
.BorderStyle = fmBorderStyleSingle
End With
Next y
Next x
End Sub
Run Code Online (Sandbox Code Playgroud)
我觉得这太棒了。不要告诉我的客户,但我不知道您可以使用Dim Groupname(1 to x, …
我的Word宏使用以下代码打开和访问Excel工作簿:
Dim objExcel As New Excel.Application
Dim exWb As Excel.Workbook
Set exWb = objExcel.Workbooks.Open("C:\Folder\Filename.xls")
' Main procedure
exWb.Close
Set exWb = Nothing
objExcel.Quit
Set objExcel = Nothing
Run Code Online (Sandbox Code Playgroud)
由于我仍在调试中,因此宏通常在到达“关闭”和“退出”命令之前就停止了,从而使Excel实例和工作簿在后台处于打开状态。
有时我可以通过打开任务管理器并结束任务来关闭它们,但是我怀疑那是最好的解决方案。我可以在Word中编写一个宏来关闭所有打开的工作簿并退出Excel的所有(后台)实例吗?
在"With"块中,有没有办法引用块本身的主题?
例如,如果我想将文本从下面的单元格复制到单元格中,我可以说:
With MyRange
.cells(1).offset(1,0).copy .cells(1)
End With
Run Code Online (Sandbox Code Playgroud)
但我也可以这样做吗?
With MyRange.cells(1)
.offset(1,0).copy [???]
End With
Run Code Online (Sandbox Code Playgroud)
"[???]"将是一种简单的说法"MyRange.Cells(1)".