まりふのひと

家計簿77の[健康記録更新]で実行時エラー(9)が出る

ばぁーばさんへお願い

 「マクロ家計簿77v122b」をインストールし、テストしていただけませんか?

(ばぁーばさん以外の方は「マクロ家計簿77v122a」,「マクロ健康記録v004d」をインストールしてください)



 ばぁーばさんの家計簿77で、[健康記録更新]を行うと実行時エラー(エラーコード 9)が出る件。


考察

  1. 2015.01.26 ばぁーばのひとり言
    1. マクロ家計簿77 ver.1.21 で、[健康記録更新]を行うと「実行時エラー '9' インデックスが有効範囲にありません」が出る。
    2. バージョンを 1.22a に上げてもらったが同じ...
  2. 2015.01.27 ばぁーばのひとり言
    1. PrintScreenの画面を見る限りでは、「マクロ健康記録」が起動している...
    2. 更に[デバッグ]してもらったら、
      • 「健康記録****」ブックをアクティブにするコードでエラーになっているようだ。
      • その前のコードは「マクロ健康記録」を開く だから、上記と合う。


原因
 原因は‥‥ わからないが、今日の MAPS-TA ではそのようなエラーは出なかった。(別のエラーは出たが...)
この時点ではマクロファイル(xlsm)が2っ開いているので、CPU に負担がかかっているのかなぁ〜 と勝手に想定。で、下記のようにコードを変えてみた

  1. Private Sub cmd健康記録更新_Click()
  2. Dim mbTitle As String
  3. Const loopMax As Long = 1000
  4. Dim i As Long, lngShori As Long
  5. Dim socSheetName As String, socBookName As String, ansBookName As String
  6.  
  7. mbTitle = "cmd健康記録更新_Click/" & getMacroTitle()
  8. socSheetName = ActiveSheet.Name
  9. socBookName = ActiveWorkbook.Name
  10. Unload frmメニュー
  11. If isExistシート名("健康記録") = False Then Exit Sub
  12. lngShori = MsgBox("この処理を行うと、家計簿77 は上書き保存後、閉じられます。" & vbCrLf & vbCrLf _
  13. & " ■[はい]:家計簿77 は、健康記録シートをアクティブにして閉じる" & vbCrLf _
  14. & " ■[いいえ]:家計簿77 は、収支シートをアクティブにして閉じる" & vbCrLf _
  15. & " ■[キャンセル]:[健康記録更新]は行わない" _
  16. , vbYesNoCancel + vbExclamation, mbTitle)
  17. If lngShori = vbCancel Then Exit Sub
  18.  
  19. '  Application.ScreenUpdating = False
  20. ansBookName = 健康記録更新()
  21. Workbooks(socBookName).Activate
  22. If lngShori = vbYes Then
  23. boolAns = 上書き保存して閉じる(socSheetName, True)
  24. Else
  25. boolAns = 上書き保存して閉じる(socSheetName, False)
  26. End If
  27. DoEvents    '2015-0127 追加
  28. 'マクロ健康記録.xlsmを開く。
  29. Workbooks.Open Filename:=ThisWorkbook.Path & "\" & Macro健康記録FileName
  30. '健康記録****.xlsxをアクティブにする。
  31. DoEvents    '2015-0124 On Error GoTo 0 までを追加した。
  32. On Error Resume Next
  33. For i = 1 To loopMax
  34. Workbooks(ansBookName).Activate
  35. DoEvents
  36. If Err.Number = 0 Then Exit For
  37. Next
  38. On Error GoTo 0
  39. 'マクロ家計簿77.xlsmを閉じる。
  40. ThisWorkbook.Close SaveChanges:=False
  41. Application.ScreenUpdating = True
  42.  
  43. End Sub
    • No.34でエラーになっているので、
    • ループさせ、エラーコードが 0(正常)になるのを待つ。
    • 無限ループさせると固まってしまうので、1000回を限度とする。
    • で、マジェンタ色のコードを追加した。
    • No.35と36は逆の方がよかったかも...


追伸(2015.01.30)

  1. 2015.01.28 ばぁーばのひとり言
    • バージョン 1.22c でテスト依頼...
      今回は“Sheets("健康記録").Activate”でエラーになっている。
    • 昨日までは Workbooks で、今回は Sheets ということは、ファイルに問題があるかも...
       そこで、田布施町高齢者いきいき館にPCを持ってきてもらうことにした。(iPS-BB No.714)

  2. 2015.01.30 田布施町高齢者いきいき館での作業 ‥‥ 約30分間
    • 動作確認すると、No.33 の i(繰り返し回数)は 1001、ansBookName の値は "" であった。
    • No.20 の 健康記録更新() がおかしいので、ブレークポイントを設定し、起動し直す。
    • すると、健康記録****・ファイルはあるのに開けない‥‥ ことが解った。

    • 健康記録**** を直接開くと、

      「‥‥ 読み取れない内容が含まれています。」と言われたので「回復」して、上書き保存する。
    • 家計簿77から[健康記録更新]を行う‥‥‥‥ と、正常に処理された。(成功!
    • 「マクロ家計簿77v122a」に戻しても、正常に処理されることを確認した。