excel - 将按钮操作到工作表仅适用于调试模式
问题描述
我尝试向新创建的工作簿添加一个按钮并在按钮上设置文本。
当我调试代码(F8)时,它工作正常。但是当我运行代码时,似乎工作簿在代码位于按钮代码处之前没有打开,它返回运行时错误 438。
这是代码:
' more code is above here...
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
' here is the issue
wsO.Buttons.Add(975, 0, 229, 30).Select ' works
DoEvents
Selection.Characters.text = "Plocka fram tomma Utl.yta" ' no error here but it's not carried out
Selection.OnAction = ThisWorkbook.Name & "!FilterUtlYta" ' here it errors on 438, but if I debug then press F8 it works fine
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.name = "btn"
wsO.Shapes.Range(Array("btn")).Characters.text = "Plocka fram tomma Utl.yta"
仍然会产生错误,但让工作簿打开然后按 F8 可以解决问题。
为什么我会在此工作簿上遇到此问题,我该怎么做才能解决它?我在不同的工作簿中使用相同的代码,它工作正常。
解决方案
推荐阅读
- wordpress - Functions.php 使用 rel:="nofollow" 设置所有外部链接
- sql - 创建这两个表或添加外键约束时出错
- c++ - 如何将非静态成员函数用于模板参数?
- python - 调整方法在 Pandas ewm() 函数中如何工作?
- android - React Native 错误:Android 上的 spawnSync adb ENOENT 错误
- codesys - 使用 FB_Init 方法保留功能块
- sql - 在公式中组合度量和维度 (Datastudio)
- angular - Angular 材质树中的对象数组
- reactjs - ThreeJS Gltf 已加载,但模型不可见(生产版本)
- sql - SQL。有限查询