財務記録用の Excel 2010 ブックがあります。1 つのワークシートに、メニューがあります。このメニューでは、メニューを構成するセルを非表示にし、トランザクション入力フォームを再表示するマクロが添付されたボタンを選択します。
このトランザクション入力フォームには、ここでは重要ではないいくつかの値が含まれています。データを入力したら、適切にラベル付けされた入力ボタンを押します。ドキュメントを書いたとき、このボタンは正常に機能しました。レコード ワークシートに移動し、正しいテーブルに空白行を挿入し、フォームに戻ってデータをコピーし、新しい空白行に戻ってデータを挿入しました。次に、日付列で新しいものから古いものへの並べ替えを押して、エントリが正しい順序になっていることを確認します。最後に、フォームに戻り、データをクリアします。履歴シートを非表示にするまで、これはうまくいきました。
シートを非表示にすることにしたとき、マクロを再記録し、操作を実行してシートを再非表示にしました。マクロを実行すると、シートが再表示されます。その後、「実行時エラー '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 で実行してみます。グーグルは私の友達です。ご助力いただきありがとうございます。あなたが与え続けるどんな助けも大いに感謝します。