24日の「iPS-BBの会」で、
家計簿77の[翌月分シート作成]で、シートはできるが、前月分のデータが入っている(残る)との不具合を指摘された。
- 原因は、
- シートが保護されていたため、
- 行削除ができなかった もの。
- 処置は、
- シート見出しを右クリックし、
- [シート保護の解除]をクリックする。
- 注)[シートの保護]はクリックしないこと!!!
- ソースコードを見ると‥‥
- Selection.EntireRow.Delete が利いていない。
- 利かない原因は、シートが保護されていたためで、これは納得できる。
- 問題は「On Error GoTo Err_データ部クリア」が入っているのに、効いていないこと。
但し、呼び出し元には「On Error GoTo」文は入っていない。
- Selection.EntireRow.Delete が利いていない。
- ステップ実行して追うと‥‥
- 上記 1.1. でエラーとなり、
- Err_データ部クリア(下記)に飛ぶ。
- Err_データ部クリア:
- MsgBox "データ部クリアに失敗しました。", vbCrLf & vbCrLf _
- & " 引数1=" & argシート名 & vbCrLf & vbCrLf _
- & Err.Number & Err.Description, vbCritical, mbTitle
- Resume Exit_データ部クリア
- しかし、MsgBox を出すことなく、呼び出し元に戻る。
- 呼び出し元には On Error GoTo は無いので、正常終了してしまう。
- 但し、2.2. の Err_データ部クリア にジャンプした後、
デバッグウィンドウで ?Err.Number すると 1004 と表示された。
(∵Delete が実行できなかったためであろう)