【发布时间】:2018-12-04 13:56:12
【问题描述】:
我有一个包含 3 个文本框和一个按钮的表单。 Button 有一个“Click”事件处理程序,代码如下:
编辑:按照 Darren Bartrup-Cook 的建议,我删除了所有 Select 和 Active 调用,但这没有帮助。
Sheets("__TEMPLATE").Copy After:=Sheets(Sheets.Count)
Dim ws As Worksheet
Dim size As Integer
Set ws = Sheets(Sheets.Count)
ws.Range("B1:B1").FormulaR1C1 = Me.tbName
size = Me.tbSize
Dim cSize As Range
Set cSize = ws.Range("B2:B2")
cSize.Formula = Me.tbSize
cSize.NumberFormat = "General"
cSize.Value = cSize.Value
If Me.tbIndex.TextLength > 0 Then
ws.Range("B3:B3").FormulaR1C1 = Me.tbIndex
End If
ActiveWindow.ScrollRow = 1
ws.Name = Me.tbName
ws.Range("A" & (size + 6) & ":G1005").Delete
Unload Me
预期的操作是复制模板表并使用第二个文本框中的数字调整表格大小(没有真正的表格,只有一系列类似表格的格式化行)。它还将文本框的值复制到单元格 B2 和 B3。
问题在于它并非每次都有效;有时它只是复制模板并停止;其他时候它可能会抛出指出 Worksheets().Select 方法的错误消息;
Sheets().Select 和 Workbook().Worksheets().Select 符号产生相同的结果。
谁能告诉我从表单方法的代码中引用工作表的正确方法是什么?
谢谢!
【问题讨论】:
-
避免使用
Select、Active和所有这些口香糖。我认为这是您可以通过阅读得到的答案:how-to-avoid-using-select-in-excel-vba。我冒险的主要问题是您假设在运行代码之前选择了正确的单元格、工作表和工作簿。 -
我已将工作表分配给一个变量,结果成功了;但是,对于范围而言,情况并非如此。请问对此有什么建议吗?谢谢。
-
您是否收到任何错误消息?文本框中的值是什么(
tbSize、tbIndex和tbName)?