0

私はプログラマーではありませんが、会社から日々のプロセスのワークシートを作成するように依頼されたため、その役割を果たしてきました。そのため、質問を正しい用語で述べていない場合や、回答を次のように分解する必要がある場合は、事前にお詫び申し上げます。私がそうであるように、あなたは完全なNoobと話している。

質問: ユーザーが作業中のアクティブ シートに行を追加できるボタンを設定したいと考えています。バックグラウンドで、スプレッドシートが、追加された場所と同じ場所にある同じワークブックの別のシートに行を追加するようにします。(2 つのシートは、前月の情報を持つ非アクティブなワークシートとのみ同一です) これを行う必要があるのは、アクティブなワークシートが非アクティブなシートからデータを取得しており、同じ行数を保持したいからです。両方のシートにデータが同じ行にあるため、正しいデータが取得されます。

アドバイスありがとうございます!

4

2 に答える 2

0

投稿を読み直した後、これがあなたが探しているものかどうかは 100% わかりませんが、試してみます。

Sub Button1_Click()
    r0w = Selection.Row
    c0l = Selection.Column
    ThisWorkbook.Sheets("Sheet1").Cells(r0w, c0l).EntireRow.Insert
    ThisWorkbook.Sheets("Sheet2").Cells(r0w, c0l).EntireRow.Insert
End Sub

これは私の側でうまくいくようです。

于 2013-11-14T19:56:54.213 に答える
0

マクロレコーダーで簡単に遊んでみると、次のコードが残っています。

Sub insertRow()
    Dim insertBeforeRow
    insertBeforeRow = 1

    ActiveSheet.Rows(insertBeforeRow).Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

    ' The following two lines are the same - both active the second sheet in the book
    Sheet2.Activate
    Sheets(2).Activate

    ActiveSheet.Rows(insertBeforeRow).Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End Sub

次に、デバッガーで簡単にプレイすると、ActiveSheet にプロパティがあることがわかりますindex。これは Sheets コレクション内のインデックスです。( をクリックActiveSheetし、右クリックして [ウォッチの追加] を選択します)

私はこれを思いつきました (エラーチェックはありません。いくつか追加することを忘れないでください! - ワークブックの最後のシートを選択してこれを実行すると、恐ろしい「うーん、ダミーではありません」というエラー音とメッセージ ボックスが表示されます。 )

Sub getActiveSheet()
    Dim curSheetIndex, numSheets, secondSheetIndex

    curSheetIndex = ActiveSheet.Index
    secondSheetIndex = curSheetIndex + 1

    ' the following two lines are equivalent - both operate on the Active Sheet
    ActiveSheet.Cells(1, 1) = "Active Sheet"
    Sheets(curSheetIndex).Cells(1, 1) = "Active Sheet"

    ' finally, operate on the following sheet
    Sheets(secondSheetIndex).Cells(1, 1) = "Sheet following Active Sheet"
End Sub

目的に合わせて 2 つのスニペットを結合できます。VBA 環境のデバッガーは、利用可能な機能とプロパティを発見するという点で優れています。正直なところ、これが VBA でのこのような小さなタスクをとても楽しんでいる理由の 1 つです。多くの場合、デバッガーと Excel のオブジェクト モデルに少し慣れていれば、目的の効果をすばやく簡単に実現できます。

于 2013-11-14T19:11:41.917 に答える