我正在使用这样的代码从剪贴板中获取文本.
Dim DataObj As New MSForms.DataObject
DataObj.GetFromClipboard
myString = DataObj.GetText
Run Code Online (Sandbox Code Playgroud)
我使用错误处理来解决剪贴板为空的情况,只要我将错误陷阱设置为未处理错误的中断,一切都很好.
但是,由于无关的原因,我想将错误陷阱设置为中断所有错误,这会在DataObj.GetText找到空剪贴板时引发错误.是否有任何类型的测试我可以进一步上游应用以避免尝试处理空剪贴板?
在RefersTo属性的VBA帮助中,他们给出了列出Wkb中所有名称的示例(充实,以便您可以按原样运行)
Sub showNames()'from VBA Help for "RefersTo"
Dim newSheet As Worksheet
Set newSheet = Worksheets.Add
Dim i As Long, nm As Name
i = 1
For Each nm In ActiveWorkbook.Names
newSheet.Cells(i, 1).Value = nm.Name
newSheet.Cells(i, 2).Value = "'" & nm.RefersTo
i = i + 1
Next
newSheet.Columns("A:B").AutoFit
End Sub
Run Code Online (Sandbox Code Playgroud)
当我在我当前的项目中运行它时,它会出现许多我认为早已消失的名称.但在这里,他们仍然闲逛,指的是不再存在的地方.我认为这正在减慢我的系统,我想摆脱那些名称,但它们不会出现在Define Name窗口中,那么我在哪里可以找到它们?
编辑:我想提一下,这个Wbk的链接项目是灰色的.
要查找显示器的大小,我一直在使用:
Declare Function GetSystemMetrics32 Lib "user32" Alias "GetSystemMetrics" (ByVal Index As Long) As Long
Run Code Online (Sandbox Code Playgroud)
然后:
Function getMonitorSize()
monitorHeight = GetSystemMetrics32(1)
monitorWidth = GetSystemMetrics32(0)
End Function
Run Code Online (Sandbox Code Playgroud)
这适用于主显示器,但如何找到外接显示器的大小?
Excel常量"True"的计算结果为True,常量"vbTrue"的计算结果为-1.我一直认为这些在VBA代码中可以互换,但事实并非如此.这两个常量产生不同结果的一个地方是设置CheckBoxes.将CheckBox.value设置为True会产生预期结果,但将其设置为vbTrue会使CheckBox保留为TripleState.
Sub setCkBox1()
CheckBox1.TripleState = False
CheckBox1.Value = vbTrue '<<<< the check mark is dimmed to show TripleState is True
Debug.Print CheckBox1.TripleState: Stop '<<<< even though it won't admit it
CheckBox1.Value = True '<<<< check mark is not dimmed
End Sub
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,VBA中的其他两个常量是不可互换的?