- ベストアンサー
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ではだめなのでしょうか? 理由を教えてください。
- zugvebwoesn
- お礼率100% (39/39)
- Visual Basic
- 回答数2
- ありがとう数2
- みんなの回答 (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 にて。
その他の回答 (1)
- nicotinism
- ベストアンサー率70% (1019/1452)
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
お礼
ご提示いただいたその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
- ベストアンサー
- Visual Basic
- 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=""』は何故必要なのでしょうか?
- ベストアンサー
- Visual Basic
- セルに対して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 --------- 上記のようにしたかったのですが、 どうしてもうまくいきません。 どなたか宜しくお願します。
- 締切済み
- Visual Basic
- 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 これで一応こちらの求めている処理はできたのですが、もっと簡単に(もしくはすっきりと) できる方法はないでしょうか? 以上、よろしくお願いいたします。
- ベストアンサー
- その他MS Office製品
- 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の表示で可能だといろいろ調べてわかったのですが、実際にやるとうまくいきません。 どこが間違っているのでしょうか? 学習不足ではありますが、よろしくお願いします。
- ベストアンサー
- Visual Basic
お礼
ご回答ありがとうございました。