小编Roy*_*Roy的帖子

使用GetText从剪贴板获取文本 - 避免在空剪贴板上出错

我正在使用这样的代码从剪贴板中获取文本.

Dim DataObj As New MSForms.DataObject
DataObj.GetFromClipboard
myString = DataObj.GetText
Run Code Online (Sandbox Code Playgroud)

我使用错误处理来解决剪贴板为空的情况,只要我将错误陷阱设置为未处理错误的中断,一切都很好.

但是,由于无关的原因,我想将错误陷阱设置为中断所有错误,这会在DataObj.GetText找到空剪贴板时引发错误.是否有任何类型的测试我可以进一步上游应用以避免尝试处理空剪贴板?

excel clipboard vba copy-paste clipboarddata

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

Wbk中删除的名称仍然存在,并引用不存在的位置,慢速Excel

在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的链接项目是灰色的.

excel vba names excel-vba

5
推荐指数
2
解决办法
3647
查看次数

在excel vba中查找外部显示器的大小

要查找显示器的大小,我一直在使用:

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)

这适用于主显示器,但如何找到外接显示器的大小?

api excel vba getsystemmetrics

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

vbTrue不是True

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中的其他两个常量是不可互换的?

excel vba userform

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