重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

質問です。下記のようにコードを書いたのですが、エラーが出て
先へ進めません。修正箇所のご指摘とできれば修正後のものをお願いします。
内容はワークシートの中身をプリントするかしないかだけなのですが。

Public Sub PrintWorksheets2()

'declare variables and assign address
Dim intPrint As Integer, intCount As Integer, wkbHours As Workbook, shtCurrent As Worksheet
Set wkbHours = Application.Workbooks("t9-ex-e9.xls")

'ask user if he or she wants to print the worksheet
shtCurrent = wkbHours
For intCount = 1 To wkbHours.Worksheets.Count
intPrint = MsgBox(prompt:="Print " & shtCurrent.Name & "?", Buttons:=vbYesNo + vbExclamation)
If intPrint = vbYes Then 'if user wants to print
shtCurrent.PrintPreview
End If
Next intCount
End Sub

A 回答 (3件)

Next for statementの意味がよくわかりませんが、


For Eachを使いたくないのであれば、

> shtCurrent = wkbHours
> For intCount = 1 To wkbHours.Worksheets.Count

この2行を入替えて

For intCount = 1 To wkbHours.Worksheets.Count
Set shtCurrent = wkbHours.Worksheets(intCount)

こんな感じでどうでしょうか?
    • good
    • 0
この回答へのお礼

すごい!できました!
setはfunctionの文頭のdim statementのすぐ下以外も持ってこれるんですね。
勉強になりました!有り難うございます!

お礼日時:2007/06/02 00:32

#1です。


すみません訂正です。Eachの記述が抜けていました。

×For shtCurrent In wkbHours.Worksheets
○For Each shtCurrent In wkbHours.Worksheets
    • good
    • 0
この回答へのお礼

大変丁寧にありがとうございます。
for each...nextでのやり方は大丈夫なのですが、
Next for statementで解決方法を探しているのです。
shtCurrentはどの用にセットすればいいのでしょうか。

set shtCurrent =Application.Workbooks("t9-ex-e9.xls").Worksheets("...")
だとまだエラーが出てしまいます。
因みにワークシートは3枚エクセルファイルの中にあります。

お礼日時:2007/06/01 16:20

これがNGですね。


×shtCurrent = wkbHours

・shtCurrentとwkbHoursの型が違います。
・Setステートメントの記述がありません。
・ループの中に入っていません。

環境がないので試していませんが、下記のコードでどうでしょうか?

'shtCurrent = wkbHours
'For intCount = 1 To wkbHours.Worksheets.Count
For shtCurrent In wkbHours.Worksheets

Next 'intCount
    • good
    • 0

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