• 締切済み

マクロのプログラミングで Do Loopステートメントです

明後日学校の情報の授業でエクセルのマクロを使ってプログラミングするんですが語句について教えてください エクセルのマクロなんですが Do Loopスタートメントって言うのをやります そこでコマンドの意味を教えてほしいんです 明後日なんでなるべく早くお願いします 今回のコマンド(と、バリエーション)って書いてあります 1) dim i as→ 2) Do While 条件式 処理 Loop 3) Do Until 条件式 処理 Loop 4) i=i+1 5)Integer この5つです お願いしますm(_ _)m

みんなの回答

noname#144013
noname#144013
回答No.1

こんにちは。 まず、授業で使用されているテキストなど(教科書、参考書など)で、VBAの解説が 記載されている場合は、それをご覧になってみて下さい。 以下、簡単に説明させて頂きます。 > 1) dim i as→ > 5) Integer  Dim ~ は、変数の宣言を行うステートメントです。  <構文>  Dim 変数名 As データ型  Dim の後に変数名を記述します。  As ~の記述でデータ型を指定します。  ⇒Integer は、そのデータ型を表す「識別子」のひとつです。  As以降は、省略可能です。  ⇒その場合のデータ型は、既定のバリアント型(Variant)になります。  <例>  Dim i As Integer   '整数型(Integer)の変数 i を宣言します。  Dim ldat As Long   '長整数型(Long)の変数 ldat を宣言します。  Dim fdat As Single  '単精度浮動小数点型(Single)の変数 fdat を宣言します。  Dim ddat As Double  '倍精度浮動小数点型(Double)の変数 ddat を宣言します。  Dim sTxt As String  '文字列型(String)の変数 sTxt を宣言します。  Dim vDat1 As Variant  'バリアント型(Variant)の変数 vDat1 を宣言します。  Dim vDat2 As Variant  'バリアント型(Variant)の変数 vDat2 を宣言します。  '各変数に値を格納  i = 255  ldat = 5120  fdat = 123.45  ddat = 12345.567  sTxt = "ABC"  vDat1 = i * 100     'バリアント型変数 vDat1 に、( 変数 i の値×100)の結果を                 '格納します。  vDat2 = sTxt & "DEF" 'バリアント型変数 vDat2 に、文字列型変数 sTxt の値(文字列)                 'と文字列 "DEF"を結合した文字列を格納します。  ※上記のように、バリアント型の変数には、数値でも文字列でも、あらゆる種類のデータ   を格納することができます。(※但し、一部格納できないデータもあります。) > 4) i=i+1  変数 i の値(中身) に +1 した結果を、変数 i に再格納します。  ⇒つまり、 i の値を +1 します。 > 2) Do While 条件式 > 処理 > Loop  条件が成立している間(=条件式の結果が「真」の間)、Loop までの処理を  繰り返します。  条件が成立しなくなったら、ループを終了します。  <例>  Dim i As Integer  i = 0  Do While i < 10    i = i + 1  Loop  上記は、i の値が 10未満の間(⇒ i の値が 0~9 の間)、   i = i + 1 の処理(計算)を繰り返します。   i の値が 10 になったらループを終了します。  ⇒従って、ループを終了した後の i の値は、10 になっています。 > 3) Do Until 条件式 > 処理 > Loop  条件が成立するまで(=条件式の結果が「偽」の間)、Loop までの処理を  繰り返します。  条件が成立したら、ループを終了します。  <例>  Dim i As Integer  i = 0  Do Until i = 10    i = i + 1  Loop  上記は、i の値が 10 になるまで(⇒ i の値が 10 でない間)、   i = i + 1 の処理(計算)を繰り返します。   i の値が 10 になったらループを終了します。  ⇒従って、ループを終了した後の i の値は、10 になっています。 VBAの構文等については、下記サイトが参考になると思います。 宜しければ、ご覧になってみて下さい。 ■参考サイト Excel VBA 解説メニュー http://www.optimizm.jp/index_vbanyumon.shtml エクセルVBAマクロ - ExcelVBA.net http://www.excel-vba.net/ 以上です。

関連するQ&A

  • Do..Loopステートメントの使い方について

    現在、入門書を画面で確認しながら ExcelVBAの勉強をしています。 Do...Loopで躓いてしまいました。 Do...Loopステートメントの種類は 条件を満たすまでループするもの Do Until...Loop(ループの前で条件判断) Do...Loop Until(ループの後で条件判断) 条件を満たす間はループするもの Do While...Loop(ループの前で条件判断) Do...Loop While(ループの後で条件判断) とあって、 例えば、A1からA7まで文字が入力されていて 空白のセルになるまで太文字にするとしたら、 ループの前に条件判断していると A1が空白だと処理はされず ループの後で条件判断すると A1が空白でも処理はされる とありました。 とすると、 条件判断はループ後にした方が良いと言う事なのでしょうか。 (空白でも処理してくれるので) 自分が処理したいものが ループ「後」にするのか又は ループ「前」にするのか どのように判断すれば良いのかと言うことと、 また、 条件を満たすUntil(まで)とWhile(間) どちらを使用すれば良いのかの判断方法もわかりません。 超初心者の質問内容で申し訳ありません。 VBAって面白いなぁと思い始めたところで なんとか理解したいので 教えていただけると大変助かります。 よろしくお願いします。

  • Do~Loopステートメント

    Do~Loopステートメントで使わな方が良いステートメントとは? Do~Loopステートメントで「古いから使わない方がよい」、と言われたことがあるのですが どれの事だか忘れてしまいました。 Sub test() セルのA1~A10に1~10を入力する i = 1 Do While i < 11 Worksheets("Sheet1").Cells(i, 1).Value = i i = i + 1 Loop End Sub これは一般的だから使ってもよいと思います。 Sub test() セルのA1~A10に1~10を入力する i = 1 Do Until i = 11 Worksheets("Sheet1").Cells(i, 1).Value = i i = i + 1 Loop End Sub これもよく見かけます。 Do While,Do Until以外にもloopステートメントってありますか? あと使わない方が良いステートメント、私の勘違いでなければ教えてください。

  • 2重のDo~Loopは?

    Excel VBAですが、A列にデータが入っています。 A列のデータが変わるまで 処理1 を実行し、変われば 処理2 を実行する。データがなくなれば終了する方法が分りません。宜しくお願いします。 i = 2 Do Until Cells(i, 1) = "" Do Until Cells(i, 1) <> Cells(i - 1, 1) 処理1 Loop 処理2 Loop

  • Exit Doで二つのloopを抜けるには?

    Do Do For Each If 値 = "" Then Exit Do End If Next Loop Until 条件1 Loop Until 条件2 のようなネストをした場合、Exit Doでloopを抜ける時、条件1と条件2のどちらに移動するのですか? もし条件1に移動する場合、条件2を抜けたいのならどうすればいいのでしょうか? Exit Do Do みたいな事がしたいです。

  • Do ~ loop until [VBA]

    Do 命令文 Loop Until 条件式 について質問なのですが、条件式には複数の条件を指定することは出来るのでしょうか? 例えば、変数mが100より大きく、変数nと同じでない、という2つの条件を指定したいときは Loop Until m >= 100 and m <> n もしくは Loop Until m >= 100 and <> n でしょうか? また、上記の様な条件式でOKだとしたら、andで結べる条件に制限数はありますか? よろしくお願いします。

  • Do loopのマクロ

    以下のマクロの問題点を教えていただきたいのです。 A列を上から順番に調べて、値が10のときだけBに分岐して処理を行い(処理の内容は省略してあります)、またAに戻って、空白のセルが見つかったら処理をやめる、というマクロです。 ところが、これを実行すると空白のセルが見つかってもマクロが止まりません。何が問題でしょうか。 Sub A() Cells(1, 1).Select A: Do Until ActiveCell.Value = "" If ActiveCell.Value = 10 Then GoTo B End If ActiveCell.Offset(1, 0).Select Loop B: ActiveCell.Offset(1, 0).Select GoTo A End Sub

  • VBA Do…Loopについて

    お世話になっております。 ただいま、アクセスVBAにてDo…Loopの練習をしております。 テキストボックス1に数字を入れ、コマンドボタンを押すと入力した数字が1ずつ引かれる形でテキストボックス2に入るようにしたいです。 (テキストボックス1に「8」→テキストボックス2に「87654321」のように) Dim I As Variant I = Me.text1.Value Me.text2.Value = Me.text1.Value Do Until I = 1 I = I - 1 Me.text2.Value = Me.txt2.Value & I Loop で動作そのものはするのですが、doloop前の「Me.text2.Value = Me.text1.Value」を正さないといけないようです。(課題です) これがないと入力された数字そのものが入らなくなってしまうのですが… よろしくおねがいします。

  • Excel VBA のDo Until Loopについて

    こんばんは Excel VBAの初心者です。 Do Until Loopを使って B列の値が変わるところ(下記の表だと、空白からコスモスに変わる、4行目。コスモスからチューリップに変わる6行目。チューリップから菊に変わる8行目。)に行を挿入させたいと思い、下記のマクロを組んだのですが、Do Until Loopが理解できませんでした。 どうしたら良いのか教えて頂けないでしょうか。 宜しくお願い致します。 Excelのシート B1  項目 B2  空白 B3  空白 B4  コスモス B5  コスモス B6  チューリップ B7  チューリップ B8  菊 Sub 行の挿入() Dim y As String Cells(2, 2).Select y = Cells(2, 2).Value Do Until Cells(2, 2).Value <> y ActiveCell.Offset(1).Select Selection.EntireRow.Select Selection.Insert shift:=xlDown Loop End Sub

  • VBA Do Until ~ Loop 内にif

    Excel VBAマクロにて、C列のセルのうちOKと書かれたセルのみ塗りつぶすコードを作成したつもりなのですが、動いてくれません。エラー表示も出ません。間違いを指摘して下さる方、あるいは別の書き方があるという方、教えていただけないでしょうか。 下記私が作成したものです。C列にAと書かれたセルが現れるまで処理をするようにしています。 Sub sample() Dim i As Long i = 1 Do Until Cells(i, "C").Value = ”A" If Cells(i, "C").Value = "OK" Then Cells(i, "C").Interior.ColorIndex = 5 End If i = i + 1 Loop End Sub

  • VBA 九九 Do While

    VBAのDo Whileステートメントを使って九九の表をつくりたいのですが、何度やっても途中で詰まり、実行に至りません。 For NextとDo untilではできたと思うのですがDo Whileがどうしてもわからなくて… どなたか助けてください。お願いします。 Sub 九九計算_for() Dim i, j As Integer For i = 1 To 9 For j = 1 To 9 Cells(i, j).Value = i * j Next Next End Sub Sub 九九計算_do_until() j = 1 Do i = 1 Do Cells(j, i).Value = i * j i = i + 1 Loop Until i = 10 j = j + 1 Loop Until j = 10 End Sub

専門家に質問してみよう