ばぁーばさんへお願い 「マクロ家計簿77v122b」をインストールし、テストしていただけませんか? |
ばぁーばさんの家計簿77で、[健康記録更新]を行うと実行時エラー(エラーコード 9)が出る件。
■ 考察
- 2015.01.26 ばぁーばのひとり言
- マクロ家計簿77 ver.1.21 で、[健康記録更新]を行うと「実行時エラー '9' インデックスが有効範囲にありません」が出る。
- バージョンを 1.22a に上げてもらったが同じ...
- 2015.01.27 ばぁーばのひとり言
- PrintScreenの画面を見る限りでは、「マクロ健康記録」が起動している...
- 更に[デバッグ]してもらったら、
- 「健康記録****」ブックをアクティブにするコードでエラーになっているようだ。
- その前のコードは「マクロ健康記録」を開く だから、上記と合う。
■ 原因
原因は‥‥ わからないが、今日の MAPS-TA ではそのようなエラーは出なかった。(別のエラーは出たが...)
この時点ではマクロファイル(xlsm)が2っ開いているので、CPU に負担がかかっているのかなぁ〜 と勝手に想定。で、下記のようにコードを変えてみた
- Private Sub cmd健康記録更新_Click()
- Dim mbTitle As String
- Const loopMax As Long = 1000
- Dim i As Long, lngShori As Long
- Dim socSheetName As String, socBookName As String, ansBookName As String
- mbTitle = "cmd健康記録更新_Click/" & getMacroTitle()
- socSheetName = ActiveSheet.Name
- socBookName = ActiveWorkbook.Name
- Unload frmメニュー
- If isExistシート名("健康記録") = False Then Exit Sub
- lngShori = MsgBox("この処理を行うと、家計簿77 は上書き保存後、閉じられます。" & vbCrLf & vbCrLf _
- & " ■[はい]:家計簿77 は、健康記録シートをアクティブにして閉じる" & vbCrLf _
- & " ■[いいえ]:家計簿77 は、収支シートをアクティブにして閉じる" & vbCrLf _
- & " ■[キャンセル]:[健康記録更新]は行わない" _
- , vbYesNoCancel + vbExclamation, mbTitle)
- If lngShori = vbCancel Then Exit Sub
- ' Application.ScreenUpdating = False
- ansBookName = 健康記録更新()
- Workbooks(socBookName).Activate
- If lngShori = vbYes Then
- boolAns = 上書き保存して閉じる(socSheetName, True)
- Else
- boolAns = 上書き保存して閉じる(socSheetName, False)
- End If
- DoEvents '2015-0127 追加
- 'マクロ健康記録.xlsmを開く。
- Workbooks.Open Filename:=ThisWorkbook.Path & "\" & Macro健康記録FileName
- '健康記録****.xlsxをアクティブにする。
- DoEvents '2015-0124 On Error GoTo 0 までを追加した。
- On Error Resume Next
- For i = 1 To loopMax
- Workbooks(ansBookName).Activate
- DoEvents
- If Err.Number = 0 Then Exit For
- Next
- On Error GoTo 0
- 'マクロ家計簿77.xlsmを閉じる。
- ThisWorkbook.Close SaveChanges:=False
- Application.ScreenUpdating = True
- End Sub
-
- No.34でエラーになっているので、
- ループさせ、エラーコードが 0(正常)になるのを待つ。
- 無限ループさせると固まってしまうので、1000回を限度とする。
- で、マジェンタ色のコードを追加した。
- No.35と36は逆の方がよかったかも...
追伸(2015.01.30)
- 2015.01.28 ばぁーばのひとり言
- 2015.01.30 田布施町高齢者いきいき館での作業 ‥‥ 約30分間
- 動作確認すると、No.33 の i(繰り返し回数)は 1001、ansBookName の値は "" であった。
- No.20 の 健康記録更新() がおかしいので、ブレークポイントを設定し、起動し直す。
- すると、健康記録****・ファイルはあるのに開けない‥‥ ことが解った。
- 健康記録**** を直接開くと、
「‥‥ 読み取れない内容が含まれています。」と言われたので「回復」して、上書き保存する。 - 家計簿77から[健康記録更新]を行う‥‥‥‥ と、正常に処理された。(成功!)
- 「マクロ家計簿77v122a」に戻しても、正常に処理されることを確認した。