• ベストアンサー

For next使う場合、next iはできない?

vbsでFor next使う場合、next iはできないのですか? for i = 1 to 2 msgbox "" next i をすると "ステートメントの末尾が不正です"800A401 になります。 しかし for i = 1 to 2 msgbox "" next にすると、問題ないです。 VBAではnext iでも実行できるけどVBSではだめなのでしょうか? 理由を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

Excel2003(Office2003)は持ち合わせていないので、2002の場合なら・・ VBE上で for i = 1 to 2 msgbox "" next i となっていたら、for の所にカーソルを持って行って、F1 キーを押せば 該当すると思われるものがピックアップされます。 あるいは、For まで打ち込んで、F1 とか イミディエイトウィンドウ(Ctrl + G で出現)で、For まで打ち込んで、F1 とか 2002なら --------------------- For キーワード キーワード For は、次の構文で使用します。 For...Next ステートメント For Each...Next ステートメント Open ステートメント ------------------------- となりますので、For Each...Next ステートメント をクリックすると 前回回答のがでます。 たしか、2002の場合はVBAのヘルプはインストール時のオプション扱いだった記憶・・ 2003は分かりません。 蛇足ですがOffice2010のVBAのヘルプは今までで一番使いやすいです。 ところが2013では 『以前のバージョンの Office に付属していた開発者用リファレンス ヘルプ ファイルは、セットアップから削除され、 Microsoft Developer Network (MSDN) で参照できるようになります。』 だとさ (-"-) http://technet.microsoft.com/ja-jp/library/cc178954%28v=office.15%29 VBSのヘルプは、ここから http://www.microsoft.com/ja-jp/download/details.aspx?id=1406 scd56jp.exe をダウンロードして 実行するとインストール先を聞いてきます。OSがWinXPなら既定のフォルダは C:\Program Files\Microsoft Windows Script\ScriptDocs ですので、そこから script56.chm だけをお好きな所にコピーします。 他のものに用は無いので、コントロールパネルからアンインストールしてください。 または解凍ソフトをインストールして http://win.just4fun.biz/WSH/WSH%E3%81%AE%E3%83%98%E3%83%AB%E3%83%97%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E5%85%A5%E6%89%8B%E6%96%B9%E6%B3%95.html にて。

zugvebwoesn
質問者

お礼

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

その他の回答 (1)

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

VBAのヘルプだと For counter = start To end [Step step] [statements] [Exit For] [statements] Next [counter] で VBSでは For counter = start To end [Step step] [statements] [Exit For] [statements] Next となっています。 私もVBAでは、For ~ Next の入れ子の時に分かりやすいように [counter]を入れる場合がありますが 何故、VBSでは無いのかは分かりません。 開発者が『要らんだろう』って考えたから・・かな?としか。 元々VBSはVB・VBAの簡略版的なものに システムの操作用のメソッド・関数を加えたものと理解しています(私は)。 なので出来ない事もあります。 VBA の機能で VBScript に含まれていない機能 http://msdn.microsoft.com/ja-jp/library/cc392401.aspx

zugvebwoesn
質問者

お礼

ご提示いただいたそのvba、vbsのヘルプはどうやって見れるのでしょうか? vbe画面で「loop」と入力して “For...Next ステートメントの使い方” と言うのを開いたのですが その構文は記載されてませんでした。(エクセル2003) でもvbsでは使えないという事がわかったのでよかったです。 vbsを開発する人は不要な機能を付けないようにしたのですね

関連するQ&A

  • For ~ Next の使い方

    for ~ next 構文の途中でカウンターを進めることはできますか。 For I=1 to 10 処理 if ~ then next 処理 next このようにすると、エラーになります。 仕方なく次のようにしていますが、もっと良い方法はありますか。 For I=1 to 10 処理 if ~ then goto 次の行へ 処理 次の行へ: next

  • VBAのfor...next構文で i = A to Z としたい。

    VBAでfor...next構文で通常  for i = 1 to 100 などとしますが、それをA~Zまでとする場合どのようにすればよいでしょうか?

  • For~Nextステートメント  途中で止めるには

    For~Nextステートメント で、変数が5なら止めたいのですがIFを使わない方法があったと思うのですが、 忘れてしまいました。 今は、 +++++++++++++++++++++++++++++ Sub test() Dim i As Long For i = 2 To 10 If i = 5 Then Stop End If Next End Sub +++++++++++++++++++++++++++++ としていますが、 If i = 5 Then Stop End If じゃなくても、一つのメソッドで出来た気がするのですが、 わかる方いらっしゃいますか? ご回答よろしくお願いします。

  • Access VBA でのFor_Nextステートメントで使用例の意味が理解できず困っています

    Access VBA の勉強を始めて間もないものですが、あるテキストのFor_Nextステートメント使用の一部分の意味がわかりません。教えてください。 Sub ループのネスト() Dim i As Integer, j As Integer Dim myStr As String '九九の結果を表示する For i = 1 To 9 For j = 1 To 9 myStr = myStr & i * j & " " Next j MsgBox myStr, , i & "の段" myStr = "" Next i End Sub 以上の文面で(1)『myStr = myStr & i * j & " "』でmystrにmyStr & i * j & " "を代入する意味だとは理解できますがmystr&を右辺に記載する意味がわかりません。何故必要でしょうか? (2)『mystr=""』は何故必要なのでしょうか?

  • セルに対してFor Each~In~Nextを使う

    セルに対してFor Each~In~Nextを使う事は出来ない? シートやブックに対してループする時は Sub aaa() Dim w As Worksheet For Each w In Worksheets MsgBox w.Name Next End Sub 等を使いますが、 A1に「あ」 A2に「い」 A3に「う」 が入っている場合、 Sub bbb() Dim i As Long For i = 1 To Range("a65536").End(xlUp).Row MsgBox Cells(i, 1) Next End Sub で、全ての値を取得できますが、 For~to~nextではなく セルに対してFor Each~In~Nextを使う方法があれば教えてください。 上記のように Dim w As Worksheetは宣言できますが Dim c As Workcellとはできませんでした。 なぜわざわざFor~to~nextでできる事をFor Each~In~Nextでやりたいかと言うと、 シートやブックはFor~to~nextでできるのに、セルはFor~to~nextができない理由を知りたいからです。 ご回答よろしくお願いします。

  • Excel VBA For Nextっていらないんじゃないでしょうか?

    For i = 1 to 9 Next i と Do i = i + 1 Loop Until i = 9 はほとんど一緒じゃないのでしょうか? For Nextは使わなくてもDo Untilで代用できるんじゃないでしょうか?

  • なぜiは変数の値が保持されるのに、wは保持されない

    なぜiは変数の値が保持されるのに、wは保持されないのでしょうか? Sub test() Dim w As Worksheet Dim i As Long i = 1 For Each w In Worksheets i = i + 1 Next MsgBox i MsgBox w.Name End Sub -------------------------------------- を行うと、 MsgBox i は表示されるのに、 MsgBox w.Name は、 「オブジェクト変数または With ブロック変数が設定されていません。」になります。 wはオブジェクト変数だから、 For Each ステートメントを抜けると値が破棄されてしまうのでしょうか? でもvbaのヘルプの 「For Each...Next ステートメントの使い方」 を見ても 「ステートメントを抜けるとオブジェクト変数なら値が破棄されます」 と記載されていません。

  • For Next がうまくいきません。

    VBを勉強中の初心者です。 For i = 2 To 8 For n = 3 To m Cells(4, i) = Sheets("1").Cells(3, n) Next n Next i 上記のようにつくってはみましたが、うまくいきません。 Forのうえにはmを求める式が入っています。 自分がやりたいのは、 4,2 3,3  |  | 4,8 3,9 --------- 4,3 3,3  |  | 4,8 3,8 --------- 4,4 3,3  |  | 4,8 3,7 --------- 4,5 3,3  |  | 4,8 3,6 --------- 4,6 3,3  |  | 4,8 3,5 --------- 4,7 3,3 4,8 3,4 --------- 4,8 3,3 --------- 上記のようにしたかったのですが、 どうしてもうまくいきません。 どなたか宜しくお願します。

  • excel VBA For ~Next構文について

    excel VBA For ~Next構文についての質問です。 以下のようなマクロがあります(実際はもう少し複雑なことをやっていますが)     For i = 4 To 178      Cells(i, 16).FormulaR1C1 = "=RC[-2]-'" & Lm & "'!RC[-2]"     Next i これに「もし、『Cells(i, 1)』が空白なら、この処理は行わずに、次の行にすすめ」という指示を加えたいのですが、こんな簡単なこと(?)で行き詰ってしまっています。 とりあえず以下のように修正をしてみたのですが・・・    For i = 4 To 178    If Cells(i, 1) = "" Then GoTo ワープ:    Cells(i, 16).FormulaR1C1 = "=RC[-2]-'" & Lm & "'!RC[-2]"    ワープ:   Next i  これで一応こちらの求めている処理はできたのですが、もっと簡単に(もしくはすっきりと) できる方法はないでしょうか?  以上、よろしくお願いいたします。   

  • Excel 「For … Next」のやり方

    Excel画面のA1~A10を10~1の表示にさせるため、VBAを Sub ***() Worksheets("Sheet1").Activate Cells.Clear Dim i As Integer, n As Integer For i = 10 To 1 Step -1 Cells(i, 1).Value = i Next i End Sub としたのですが、実際に表示するとA1から1~10と1ずつ加算されてしまいます。 マイナス値は-1の表示で可能だといろいろ調べてわかったのですが、実際にやるとうまくいきません。 どこが間違っているのでしょうか? 学習不足ではありますが、よろしくお願いします。

専門家に質問してみよう