システムwiki

ワークシート上の行の挿入を反映するようにコードを調整する簡単な方法はありますか?

RayElfo 受付中 最終更新日:2021-05-02 02:24

返信リスト(回答:2)

1 #
OssieMa 1

問題を本当に理解しているかどうかわからない.行が挿入されているかどうかを判別できるようにすることを意味しますか.その場合は、次のコード例を参照してください.

最初にパブリック変数のディメンションを作成し、コードのどこかに行数を割り当てます.コード内のコメントを参照してください.

次に、コードを実行して行を挿入または削除する場合は、UDF(ユーザー定義関数)を使用してこれを判別できます.ただし、同じ数の行が挿入される場合は注意が必要です その後削除(またはその逆)すると、検出されません.

Public lngRowCount As Long'サブの前に標準モジュール内にある必要があります

Sub CountRows()
'コードを実行してlngRowCountを初期化します.(WorkBookopenイベントまたはWorksheetActivateイベントに含めることができます)'WorkBookopenイベントまたはWorksheetActivateイベントを含む任意のサブに含めることができます
lngRowCount=Range(Rows( "1:1 ")、Range(" EndData ")).Rows.Count
End Sub

Sub InsertRows()
'テストの次のいずれかをコメント解除します
' Rows( "3:3").Insert Shift:= xlDown '行を挿入する例
' Rows( "10:12").Delete '行を削除する例
MsgBox RowCount()
End Sub

Function RowCount()As String
Select Case Range(Rows( "1:1")、Range( "EndData")).Rows.Count
Case Is=lngRowCount
RowCount="Rowカウントは変更されていません."
ケースは>lngRowCount
RowCount ="行が挿入されました."
ケースはRowCount ="行が削除されました."
終了選択

終了機能

応答1# ->にスキップ
2 #
OssieMa
行が挿入されているかどうかを判別する領域の下のどこかに、DefineNameを使用して行に名前を付ける必要があることを含めるのを忘れました.サンプルコードでは、「EndData」という名前を使用しました.データの下の行を選択して、名前を付けるだけです.