2012-04-03 317 views
1

我有一個Excel 2010工作簿,用於財務記錄。在一張工作表上我有一個菜單。在這個菜單上,我選擇一個帶有附加宏的按鈕,隱藏組成菜單的單元格並取消隱藏交易輸入表單。宏執行時運行時錯誤「91」

此事務輸入包含這裏是沒有結果的幾個值。輸入數據後,您可以點擊正確標記的輸入按鈕。現在當我編寫文檔這個按鈕工作正常時,它將記錄工作表插入到正確的表中的一個空行,然後回到表單複製數據返回到新的空行並插入數據。然後它會在日期欄中按照最新到最舊的順序排列,以確保條目按正確的順序排列。最後它回到表格並清除數據。這工作正常,直到我決定隱藏曆史表。

當我決定隱藏工作表我重新錄製宏取消隱藏片預成型的操作和重新隱藏的工作表。現在,當我運行宏時,它會隱藏工作表。然後掛起「運行時錯誤」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,因此錄製的宏不會寫入它們,而我無法制作頭像和故事。

編輯: 好吧,我已經firgured如何引用表:

Worksheets("Transaction History").ListObjects("thistory").ListRows.Add (1) 

所以從那裏,我只是要重新寫了整個事情,要去嘗試做在VBA,而不是把它記錄下來。 Google是我的朋友。感謝你的幫助。你繼續給予的任何幫助都會大大降低。

+0

剛纔意識到它在插入空行之前實際掛起。 – SpeedCrazy 2012-04-03 21:32:21

+0

'.Select'是導致錯誤的主要原因:)您應該直接執行操作。現在關於'Selection.ListObject.ListRows.Add(1)'哪個表是'Selection'的,什麼是'Selection'? – 2012-04-03 21:37:17

+0

對不起,我的n00bishness在這裏,但你究竟是什麼意思「直接預製操作」?您的評論的其餘部分對我來說同樣令人困惑。對不起 – SpeedCrazy 2012-04-03 21:39:12

回答

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 
+0

是的。非常感謝。 – SpeedCrazy 2012-04-03 22:27:13