在调试模式下才能将按钮添加到表格中进行操作。

15 浏览
0 Comments

在调试模式下才能将按钮添加到表格中进行操作。

我试图向一个新创建的工作簿添加一个按钮,并设置按钮上的文本。当我调试代码(按下F8)时,它工作得很好。但是当我运行代码时,似乎工作簿在代码到达按钮代码之前没有打开,导致运行时错误438。以下是代码:

' 这里有更多代码...
Dim wbI As Workbook, wbO As Workbook
Dim wsI As Worksheet, wsO As Worksheet
Set wbI = ThisWorkbook
Set wsI = wbI.Sheets("Inläsningsfil")
Set wbO = Workbooks.Add
With wbO
    Set wsO = wbO.Sheets("Blad1")
    wbI.Activate
    LR = Sheets("Inläsningsfil").Cells(Sheets("Inläsningsfil").Rows.Count, "A").End(xlUp).Row
    wsI.Range("A1:H" & LR).copy
    wsO.Range("A1").PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End With
wsO.Range("A1").AutoFilter
wsO.Columns("A:I").EntireColumn.AutoFit
' 这里是问题所在
wsO.Buttons.Add(975, 0, 229, 30).Select ' 这行代码可以正常工作
DoEvents 
Selection.Characters.text = "Plocka fram tomma Utl.yta" ' 这里没有错误,但没有执行
Selection.OnAction = ThisWorkbook.Name & "!FilterUtlYta" ' 这里会出现错误438,但是如果我调试然后按下F8,它可以正常工作
With Selection.Characters(Start:=1, Length:=25).Font
    .Name = "Arial"
    .FontStyle = "Fet"
    .Size = 16
    .Strikethrough = False
    .Superscript = False
    .Subscript = False
    .OutlineFont = False
    .Shadow = False
    .Underline = xlUnderlineStyleNone
    .ColorIndex = xlAutomatic
End With
With Selection
    .Placement = xlFreeFloating
    .PrintObject = False
End With

我知道使用Selection不是一个好的方法,但是即使我给形状命名并使用该名称访问它,它也不起作用。

Selection.Name = "btn"
wsO.Shapes.Range(Array("btn")).Characters.text = "Plocka fram tomma Utl.yta"

仍然会出现错误,但是让工作簿打开,然后按下F8可以解决这个问题。为什么我在这个工作簿上会遇到这个问题,我该怎么解决?我在另一个工作簿中使用相同的代码,那里没有问题。

0