我有一份Excel 2010财务记录工作簿。在一个工作表上,我有一个菜单。在此菜单中,我选择一个带有附加宏的按钮,该按钮隐藏构成菜单的单元格并取消隐藏事务输入表单。
此事务输入表单包含几个不重要的值。输入数据后,您会点击相应标记的输入按钮。现在,当我写这个文档时,这个按钮运行正常;它转到记录工作表,在正确的表中插入一个空行,返回到表单,复制数据,返回到新的空行,并插入数据。然后它会在日期列上点击最新到最旧的排序,以确保条目的顺序正确。最后,它返回到表单并清除数据。这工作正常,直到我决定隐藏历史记录表。
当我决定隐藏工作表时,我重新录制宏,取消隐藏工作表并执行操作并重新隐藏工作表。现在,当我运行宏时,它会取消隐藏工作表。然后它会挂起“运行时错误'91'对象变量或未设置块变量”错误。它没有完成宏,使历史表保持可见,并且表格仍然充满数据。
在出现错误时给出的选项中选择调试显示:
Sub transaction()
'
' transaction Macro
'
'
Sheets("Income").Select
Sheets("Transaction History").Visible = True
Selection.ListObject.ListRows.Add (1)
Sheets("Income").Select
Range("B6:G6").Select
Selection.Copy
Sheets("Transaction History").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWorkbook.Worksheets("Transaction History").ListObjects("Table9").Sort. _
SortFields.Clear
ActiveWorkbook.Worksheets("Transaction History").ListObjects("Table9").Sort. _
SortFields.Add Key:=Range("Table9[[#All],[Date]]"), SortOn:=xlSortOnValues _
, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Transaction History").ListObjects("Table9"). _
Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Sheets("Transaction History").Select
ActiveWindow.SelectedSheets.Visible = False
Range("B6:G6").Select
Selection.ClearContents
Rows("6:8").Select
Range("A8").Activate
Selection.EntireRow.Hidden = False
Range("B6").Select
ActiveCell.FormulaR1C1 = "=R[1]C"
Rows("7:7").Select
Selection.EntireRow.Hidden = True
Range("C6").Select
End Sub
使用行
Selection.ListObject.ListRows.Add (1)
以黄色突出显示。我不知道任何VBA,因此录制的宏不会写它们,我也不能为此做头脑或故事。
编辑: 好的,我已经确定了如何引用该表:
Worksheets("Transaction History").ListObjects("thistory").ListRows.Add (1)
所以从那以后,我只是要重写整个事情,试着在VBA中做而不是记录它。谷歌是我的朋友。感谢你的帮助。你继续提供的任何帮助都是非常苛刻的。
答案 0 :(得分:2)
这是你在尝试的吗?
Sub transaction()
Dim wbI As Worksheet, wbO As Worksheet
Set wbI = Sheets("Income")
Set wbO = Sheets("Transaction History")
With wbO
.Visible = True
.ListObjects("thistory").ListRows.Add (1)
wbI.Range("B6:G6").Copy
.Range("B2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
With .ListObjects("thistory").Sort
With .SortFields
.Clear
.Add Key:=Range("thistory[[#All],[Date]]"), SortOn:=xlSortOnValues _
, Order:=xlDescending, DataOption:=xlSortNormal
End With
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
.Visible = False
End With
With wbI
.Range("B6:G6").ClearContents
.Rows("6:8").Hidden = False
.Range("B6").FormulaR1C1 = "=R[1]C"
.Rows(7).Hidden = True
End With
End Sub