VBScriptのloopの色々(2)

の基礎知識をベースとして、現実的な事例を確認します。

CSVファイルの準備

都道府県名とその県庁所在地のリストを用意しました。これをExcelへ読み込みます。

これを、

  1. While~Wend
  2. Do While~Loop
  3. Do~Loop While
  4. Do Until~Loop
  5. Do~Loop Until

の各ループを利用して読み込んでみます。
なお、For~Nextは予め表の大きさが分かっている場合に使用するルーフなので、この事例ではあまり向いていません。

1,北海道,Hokkaido,札幌市,Sapporo
2,青森県,Aomori,青森市,Aomori
3,岩手県,Iwate,盛岡市,Morioka
4,宮城県,Miyagi,仙台市,Sendai
5,秋田県,Akita,秋田市,Akita
6,山形県,Yamagata,山形市,Yamagata
7,福島県,Fukushima,福島市,Fukusima
8,茨城県,Ibaraki,水戸市,Mito
9,栃木県,Tochigi,宇都宮市,Utunomiya
10,群馬県,Gumma,前橋市,Maebashi
11,埼玉県,Saitama,さいたま市,Saitama
12,千葉県,Chiba,千葉市,Chiba
13,東京都,Tokyo,新宿区,Shinjyuku
14,神奈川県,Kanagawa,横浜市,yokohama
15,新潟県,Niigata,新潟市,Nigata
16,富山県,Toyama,富山市,Toyama
17,石川県,Ishikawa,石川市,Ishikawa
18,福井県,Fukui,福井市,Fukui
19,山梨県,Yamanashi,甲府市,Koufu
20,長野県,Nagano,長野市,Nagano
21,岐阜県,Gifu,岐阜市,Gifu
22,静岡県,Shizuoka,静岡市,Shizuoka
23,愛知県,Aichi,名古屋市,Nagoya
24,三重県,Mie,津市,Tu
25,滋賀県,Shiga,大津市,Ootu
26,京都府,Kyoto,京都市,Kyoto
27,大阪府,Osaka,大阪市,Osaka
28,兵庫県,Hyogo,神戸市,Koube
29,奈良県,Nara,奈良市,Nara
30,和歌山県,Wakayama,和歌山市,Wakayama
31,鳥取県,Tottori,鳥取市,Tottori
32,島根県,Shimane,松江市,Matue
33,岡山県,Okayama,岡山市,Okayama
34,広島県,Hiroshima,広島市,Hiroshima
35,山口県,Yamaguchi,山口市,Yamaguchi
36,徳島県,Tokushima,徳島市,Tokushima
37,香川県,Kagawa,香川市,Kagawa
38,愛媛県,Ehime,愛媛市,Ehime
39,高知県,Kochi,高知市,Kochi
40,福岡県,Fukuoka,福岡市,Fukuoka
41,佐賀県,Saga,佐賀市,Saga
42,長崎県,Nagasaki,長崎市,Nagasaki
43,熊本県,Kumamoto,熊本市,Kumamoto
44,大分県,Oita,大分市,Oita
45,宮崎県,Miyazaki,宮崎市,Miyazaki
46,鹿児島県,Kagoshima,鹿児島市,Kagoshima
47,沖縄県,Okinawa,那覇市,Naha

共通仕様

共通仕様として、まず表の中から、都道府県名とその県庁所在地の地名を1つの文字列にした物を、動的配列に入れます。表を全て読み終わったら、作成した配列の内容をMsgBoxで一気に表示する。と言う仕様にします。

結果は全てこうなります。

While~Wendループ

Option Explicit

'------------------------------------------------------------
'--- 都道府県と県庁所在地のシートを読み込んで表示して見る
'------------------------------------------------------------
Public Sub main()
    Dim i As Integer
    Dim str1() As String
    Dim s As String

    '---------------------------------------
    '--- While ~ Wend を使用したい例
    '---------------------------------------
    i = 1
    While Cells(i, 1).Value <> ""
        ReDim Preserve str1(i - 1)
        str1(i - 1) = Cells(i, 2) & Cells(i, 4)
        i = i + 1
    Wend
    '---------------------------------------

    '---------------------------------------
    ' 結果の表示
    '---------------------------------------
    For i = LBound(str1) To UBound(str1)
        s = s + str1(i) & vbCrLf
    Next i
    MsgBox s
    '---------------------------------------
End Sub

Do While~Loop

Option Explicit

'------------------------------------------------------------
'--- 都道府県と県庁所在地のシートを読み込んで表示して見る
'------------------------------------------------------------
Public Sub main()
    Dim i As Integer
    Dim str1() As String
    Dim s As String

    '---------------------------------------
    '--- Do While ~ Loop を使用したい例
    '---------------------------------------
    i = 1
    Do While Cells(i, 1).Value <> ""
        ReDim Preserve str1(i - 1)
        str1(i - 1) = Cells(i, 2) & Cells(i, 4)
        i = i + 1
    Loop
    '---------------------------------------

    '---------------------------------------
    ' 結果の表示
    '---------------------------------------
    For i = LBound(str1) To UBound(str1)
        s = s + str1(i) & vbCrLf
    Next i
    MsgBox s
    '---------------------------------------
End Sub

Do~Loop Whileループ

Option Explicit

'------------------------------------------------------------
'--- 都道府県と県庁所在地のシートを読み込んで表示して見る
'------------------------------------------------------------
Public Sub main()
    Dim i As Integer
    Dim str1() As String
    Dim s As String

    '---------------------------------------
    '--- Do ~ Loop While を使用したい例
    '---------------------------------------
    i = 1
    Do
        ReDim Preserve str1(i - 1)
        str1(i - 1) = Cells(i, 2) & Cells(i, 4)
        i = i + 1
    Loop  While Cells(i, 1).Value <> ""
    '---------------------------------------

    '---------------------------------------
    ' 結果の表示
    '---------------------------------------
    For i = LBound(str1) To UBound(str1)
        s = s + str1(i) & vbCrLf
    Next i
    MsgBox s
    '---------------------------------------
End Sub

Do Untile~Loopループ

Option Explicit

'------------------------------------------------------------
'--- 都道府県と県庁所在地のシートを読み込んで表示して見る
'------------------------------------------------------------
Public Sub main()
    Dim i As Integer
    Dim str1() As String
    Dim s As String

    '---------------------------------------
    '--- Do Until ~ Loop を使用したい例
    '---------------------------------------
    i = 1
    Do Until Cells(i, 1).Value = ""
        ReDim Preserve str1(i - 1)
        str1(i - 1) = Cells(i, 2) & Cells(i, 4)
        i = i + 1
    Loop
    '---------------------------------------

    '---------------------------------------
    ' 結果の表示
    '---------------------------------------
    For i = LBound(str1) To UBound(str1)
        s = s + str1(i) & vbCrLf
    Next i
    MsgBox s
    '---------------------------------------
End Sub

Do~Loop Untilループ

Option Explicit

'------------------------------------------------------------
'--- 都道府県と県庁所在地のシートを読み込んで表示して見る
'------------------------------------------------------------
Public Sub main()
    Dim i As Integer
    Dim str1() As String
    Dim s As String

    '---------------------------------------
    '--- Do ~ Loop Until を使用したい例
    '---------------------------------------
    i = 1
    Do
        ReDim Preserve str1(i - 1)
        str1(i - 1) = Cells(i, 2) & Cells(i, 4)
        i = i + 1
    Loop  Until Cells(i, 1).Value = ""
    '---------------------------------------

    '---------------------------------------
    ' 結果の表示
    '---------------------------------------
    For i = LBound(str1) To UBound(str1)
        s = s + str1(i) & vbCrLf
    Next i
    MsgBox s
    '---------------------------------------
End Sub

シェアする

  • このエントリーをはてなブックマークに追加

フォローする