在调试模式下才能将按钮添加到表格中进行操作。
在调试模式下才能将按钮添加到表格中进行操作。
我试图向一个新创建的工作簿添加一个按钮,并设置按钮上的文本。当我调试代码(按下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可以解决这个问题。为什么我在这个工作簿上会遇到这个问题,我该怎么解决?我在另一个工作簿中使用相同的代码,那里没有问题。