アプリ版:「スタンプのみでお礼する」機能のリリースについて

VBScriptのファイルから、Excelファイル内に作成したFunctionを呼び出し、データの表示や改ページなどを行わせようとしています。

しかし、この改ページの処理である、

  ActiveSheet.Rows(row).PageBreak = xlPageBreakManual

と記述した部分で以下のようなエラーが発生してしまいます。

  実行時エラー '1004':
  Range クラスの PageBreak プロパティを設定できません。

row は Long の変数で、108や205といった改行したい行の値が入ります。

不思議なことに、VBScriptファイルから呼び出した場合はエラーとなるのですが、エラーメッセージ内のデバッグボタンを押してデバッグウィンドウを表示し、『何も手を加えず』にステップインなどで処理を継続させると、エラーにならずに進んでしまいます。

何が原因であり、どのように対処すべきなのか見当もつきません。
どなたかご存じないでしょうか?

A 回答 (1件)

こんにちは。



コードの一部だけ見せられても手掛りが少なすぎて、何とも言い難いのですが^^;
んーー。。

> 実行時エラー '1004':Range クラスの PageBreak プロパティを...

実行時エラーですよね...変数 row に適切な値が代入されてないのでは?

> ActiveSheet.Rows(row).PageBreak = xlPageBreakManual

の前に Debug.Print 等を使ってエラー時の内容をチェックしてみては?

  # row は予約語なので変数名に使うのは止めといた方が良いですよ。

または、この箇所が実行されるとき、ActiveSheet が何なのかは一応確認
して下さい。例えば、グラフシートが ActiveSheet の場合は当然失敗
しますよね。

とりあえず、テスト用の Excel VBA と VBS を用意して、実験してみました
が特に問題なく動いているように見えます。再現しませんね...何だろ?

' // Excel 標準モジュール Function +++++++++++++++++++++++++++
' // ファイル名 C:\test.xls
Public Function SampleFunc(ByVal DummyArg As Long) As Long
  On Error GoTo Err_Handler
  ' // add pagebreaks
  Dim i As Long
  For i = 2 To 10
    Worksheets(1).Rows(i).PageBreak = xlPageBreakManual
  Next
  SampleFunc = 1
  Exit Function
Err_Handler:
  SampleFunc = 0
End Function

' // VBS 側+++++++++++++++++++++++++++++++++++++++++++++++++++
Dim xlApp, xlWb, lRet
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
Set xlWb = xlApp.Workbooks.Open("C:\test.xls")
' // 1は関数とあったのでダミー引数を設けただけで特に意味はなし
lRet = xlApp.Run("SampleFunc",1)
MsgBox "戻り値:=" & Cstr(lRet)
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>コードの一部だけ見せられても手掛りが少なすぎて、何とも言い難いのですが^^;
申し訳ないです。
それなりに量のあるソースになってまして、一部だけ切り出そうにもどこまで必要かがわからない状態なのです。
私が作ったのものならば、それもできたのですが……。

># row は予約語なので変数名に使うのは止めといた方が良いですよ。
ご指摘ありがとうございます。気をつけます。

変数rowの値やActiveSheetが何なのかもチェックしましたが、意図した値が入っていました。グラフシートでもありません。

なにより、質問時にも書きましたが、デバッグウィンドウ上ではエラーとならずに、問題の記述も通ってしまうのが理解できません。
出来上がったExcelファイルは意図したとおりの結果となるので、基本的に間違っていないのではと思い、ならばなぜエラーになるのか……。

書いていただいたコードは正しく動きました。
やはり、そこに至るまでのコードに問題があるのでしょうね。
どうしたものか……。

お礼日時:2008/07/06 16:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A