小编Sha*_*son的帖子

Excel VBA:如何从代码中触发事件?

我有一个Worksheet_BeforeDoubleClick事件,在目标单元格中​​打开一个列表框.我被要求通过按钮提供相同的功能,而不是(或除了)双击.

在我输入的按钮的Click事件中:

Call Worksheet_BeforeDoubleClick(Selection,true)
Run Code Online (Sandbox Code Playgroud)

...所以按钮只需"双击"单元格.它似乎运作良好,但在我开始在整个项目中使用这种技术之前,我想知道是否存在我应该注意的陷阱.

从另一个事件或标准代码模块调用事件时,最佳做法是什么?

excel vba excel-vba

5
推荐指数
1
解决办法
1万
查看次数

通过 Windows 命令行为文件分配标签?

在 Windows 资源管理器中为文件分配标签很容易。(在我的例子中,Windows 7 中的 JPEG 文件)。但是,我想在 VBA 程序中执行此操作。我可以通过 VBA 运行 Windows 命令行,所以我的问题是:

有没有办法使用命令行(在 Windows 7 或更高版本中)为文件分配标签?

tags command-line cmd windows-7 windows-8

5
推荐指数
0
解决办法
3214
查看次数

VBA:运行“提升”命令(Shell 与 ShellExecute)

在我的 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 相关联。)

谢谢。

command-line vba cmd shellexecute windows-7

4
推荐指数
1
解决办法
1万
查看次数

VBA 控件集合(数组?)

在寻找一种在用户表单上模拟可填充网格的方法时,我在 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, …

excel controls vba textbox class

4
推荐指数
1
解决办法
1423
查看次数

VBA:崩溃后如何关闭Excel.Application

我的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的所有(后台)实例吗?

excel vba ms-word word-vba

1
推荐指数
1
解决办法
914
查看次数

你能在其With块中引用一个对象吗?

在"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)".

excel vba excel-vba

1
推荐指数
1
解决办法
114
查看次数