10 VBAのループ、「Do While Until LOOP」で前判断と後判断

VBAにはForループ以外のループで、

1.Do While Loop…ある条件が継続している間、処理を続ける【前判断】

2.Do Loop While…ある条件が継続している間、処理を続ける【後判断】


3.Do Until Loop…ある条件に達するまで、処理を続ける【前判断】


4.Do Loop Until…ある条件に達するまで、処理を続ける【後判断】

の、上記4つのループもあります。

文章だけでは分かりづらいので、1つ1つ、サンプルのコードを4つ分見て行きます。
まずは、この様な画面を用意しました。

● 1つ目「Do While Loop」
セルの内容が「4以下」である間はセルを黄色いペンキで塗りつぶす。
条件判断は【前】

● 2つ目「Do Loop While」
セルの内容が「4以下」である間はセルを黄色いペンキで塗りつぶす。
条件判断は【後 (ペンキを塗ることに慣れていない職人さん) 】

● 3つ目「Do Until Loop」
セルの内容に「5」が現れるまで、セルを黄色いペンキで塗りつぶす。
条件判断は【前】

● 4つ目「Do Loop Until」
セルの内容に「5」が現れるまで、セルを黄色いペンキで塗りつぶす。
条件判断は 【後 (ペンキを塗ることに慣れていない職人さん) 】

まずは1つ目から解説致します。

● 1つ目「Do While Loop」
セルの内容が「4以下」である間はセルを黄色いペンキで塗りつぶす。
条件判断は【前】

最初にセルD3、つまりセル(3,4)の値が「4以下」かどうか判断します。
1は4以下に当てはまりますので、セルを黄色いペンキで塗りつぶします。

Offsetで1つ右に移動します。

そこでもセルの値が「4以下」かどうか判断します。

4以下ですので塗りつぶして移動します。

同様の処理を「4以下」である間は繰り返します。
そのコードを書きに掲載致します。

セルの塗りつぶしは、Interior.Colorを使って、今回黄色なので、vbYellowを指定します。

Sub ループその1_While前判断()
    
    ' セルD3をアクティブにする
    Cells(3, 4).Select
      
    'セルの値が4以下かどうか判断する
      Do While ActiveCell.Value <= 4
      
       'セルを黄いペンキで塗りつぶす
       ActiveCell.Interior.Color = vbYellow
       
        'セルを右に移動する
       ActiveCell.Offset(0, 1).Select
    
   '繰り返し
    Loop

End Sub

この様な実行結果になりました。


● 2つ目「Do Loop While」
セルの内容が「4以下」である間はセルを黄色いペンキで塗りつぶす。
条件判断は【後 (ペンキを塗ることに慣れていない職人さん) 】

「後」判断【慣れていないペンキ職人さん】をイメージして下さい。
「4以下」かどうか判断しないで、塗りつぶしてしまいます。
その後に「あ~~、間違えて塗っちゃった・・・。」と気づいて後悔します。

つまり、判断する前にセルD6である(6,4)を塗りつぶしてしまいます。
その、塗りつぶしをした後で条件判断をします。
「5」ですので、「4以下」という条件に該当しませんが、すでに塗りつぶされています。

なので後判断は、1回は必ず実行されてしまいます。

Offsetで1つ右に移動します。
今後はその失敗からペンキの塗り方に慣れてきたので、
そこでセルの値が「4以下」かどうか判断が出来るようになりました。

その繰り返しで、下記のコードを実行するとこの様になりました。

Sub ループその2_While後判断()
    
    ' セルD6をアクティブにする
    Cells(6, 4).Select
      
    '取り敢えずやっちゃえ!!
        Do
        
        ' セルを黄色に塗りつぶす
       ActiveCell.Interior.Color = vbYellow
       
        'セルを右に移動する
       ActiveCell.Offset(0, 1).Select
    
       '4 以下であれば繰り返し
      Loop While ActiveCell.Value <= 4
    
   
End Sub


ここからUntilに入ります。
ルールとして、5になるまで繰り返します。

● 3つ目「Do Until Loop」
セルの内容に「5」が現れるまで、セルを黄色いペンキで塗りつぶす。
条件判断は【前】

最初にセルD10、つまり(10,4)の値が「5」になったかどうか判断します。
まだ、「5」が現れていないので、セルを黄色いペンキで塗りつぶします。


Offsetで1つ右に移動します。

移動してもまだ、「5」になっていないので、塗りつぶして移動します。
その繰り返しで、「5」が現れた所で塗りつぶしをやめます。

この様な実行結果になりました。
実行結果とコードです。

Sub ループその3_Until前判断()
    
    ' セルD10をアクティブにする
    Cells(10, 4).Select
      
    'セルの値が5に達したかどうかを判断する
      Do Until ActiveCell.Value = 5
      
       'セルを黄いペンキで塗りつぶす
       ActiveCell.Interior.Color = vbYellow
       
        'セルを右に移動する
       ActiveCell.Offset(0, 1).Select
    
   '繰り返し
    Loop

End Sub

最後です。

● 4つ目「Do Loop Until」
セルの内容に「5」が現れるまで、セルを黄色いペンキで塗りつぶす。
条件判断は 【後 (ペンキを塗ることに慣れていない職人さん) 】

条件判断が「後」ですので、またまた【ペンキ塗りに慣れていない職人さん】になります。

セルD13、つまり(13,4)の値が「5」に達したかどうかを判断します。

5まで達したら塗りつぶさないルールですが、ペンキ塗りに慣れていない為、最初のセルを塗りつぶしてしまいます。

なので後判断は、1回は必ず実行されてしまいます。

そこで、あ~~失敗したと後悔します。
同じ失敗をしないように、気を付けた所で次に進んで、


まだ、次のセルは「5」に達していないので、塗りつぶします。


Offsetで一つ右に移動します。


移動してもまだ、「5」に達していないので、塗りつぶす・・・ということを繰り返します。

その繰り返しで、最後に「5」に到達した所で塗りつぶしをやめます。

実行結果とコードです。

Sub ループその4_Until後判断()
    
    ' セル D13をアクティブにする
    Cells(13, 4).Select
      
    '取り敢えずやっちゃえ!!
        Do
        
        'セルを黄色に塗りつぶす
       ActiveCell.Interior.Color = vbYellow
       
        'セルを右に移動する
       ActiveCell.Offset(0, 1).Select
    
       ' 5に達するまで繰り返し
      Loop Until ActiveCell.Value = 5
    
   
End Sub

皆さま、大変お疲れ様でした。
この記事最後のブレイクタイムPhotoは・・・

横浜みなとみらいの夜景です。
ランドマークタワーから撮影しました。

仕事や勉強のリフレッシュに、趣味で写真を撮っておりますので、宜しかったら フォトストック写真ACさん の投稿もご覧頂けますと、大変嬉しい限りでございます!!

こちら、無料の「ダウンロードユーザー」に登録して頂けると、無料で写真のダウンロードが可能になります。

※ 先にGoogleアカウントを作成して頂くと、登録が ラク です♪

写真素材素材【写真AC】

 

最後までご精読、誠にありがとうございました!!

自己紹介


VBA自作サンプルプログラム集へ戻る

取りあえず事務職で働きたいから手っ取り早くExcel教えてくれ


MOSなどの資格試験対策

05VBAのループその1:はじめてのForNextループ

この記事では、VBAで基本的なFor Nextループのサンプルプログラムを掲載しております。

簡単に書きますと、ループとは「繰り返し」のことです。

いつまで繰り返すのか、例えば1から10まで繰り返すのか、1から20までなのか、それとも10から0になるまでなのか、1ずつ増える、2ずつ増やす、1ずつ増減らすなどをFor Nextループを使って設定して行きます。

例えば1から10まで増やして、10になったらループ(繰り返し)を抜けるとします。
その、1から10までを入れる変数として、1番使う機会が多い変数は、恐らく「 i 」という変数です。

慣習的に、ループカウンタには i , j , k 辺りの変数を使います。

1から10まで、iに入っている値が増えていって、10になったらループを抜けて繰り返しが終わります。

それでは実際に作って行きます。

Excelシートに新しいシートを追加して、「はじめてのループ」という名前を付けます。
このシートも、Sheet1などの他のシートも、オブジェクトと言って、Excelの部品です。

下のサンプルでは、2023年7月から使い始めたSNSのThreadsのフォローワーさんを増やして見たいと思います。

フォローワーさんが1人増えた、2人増えた・・・10人増えた、繰り返しを終了、と言う流れになります。

Sub ループ1()
   
   'カウンタ変数iを整数型で宣言
   Dim i As Integer
    
   'Excelのワークシート「はじめてのループ」のセルA1をアクティブセルにする
   Worksheets("はじめてのループ").Range("A1").Select
   
   'Forループで1から10まで1ずつ増やす
    For i = 1 To 10
     
     'アクティブセルに「Threadsのフォローワーさんが i 人増えた!!」と出力
     ActiveCell.Value = "Threadsのフォローワーさんが " & i & " 人増えた!!"
    
     'アクティブセルを1つ下に移動する
     ActiveCell.Offset(1, 0).Select
    
     'iの繰り返し処理
      Next i
    
   End Sub

このプログラムを、ボタンに登録して、ボタンを押して実行します。
ボタンを作る位置は、F列ぐらいにします。

ボタンはExcelシートの 開発タブ から作成してマクロ「ループ1」を登録します。

すると、1から10までの整数をiに代入して、Threadsのフォローワーさんが増えた人数(i人)をセルに出力して、セルを1つ下に移動して繰り返します。

実行すると、こんな感じです。

お疲れ様でした。
ここで一旦、写真で休憩を挟みます。

いたばし花火大会2019です。


先ほどのプログラムでは、Threadsのフォローワーさんが1人ずつ増えました。
今度は、フォローワーさんを2人ずつ増やして、結果として奇数の人数が出力されるようにします。

for i=1 to 10の後に、Step 2と記述します。
先ほどのコードの下に1行開けて書きますので、セルA12をアクティブセルにします。

Sub ループ2()
   
   'カウンタ変数iを整数型で宣言
   Dim i As Integer
    
   'Excelのワークシート「はじめてのループ」のセルA12をアクティブセルにする
   Worksheets("はじめてのループ").Range("A12").Select
   
   'Forループで1から10まで2ずつ増やす
    For i = 1 To 10 Step 2
     
     'アクティブセルに「Threadsのフォローワーさんが i 人増えた!!」と出力
     ActiveCell.Value = "Threadsのフォローワーさんが " & i & " 人増えた!!"
    
     'アクティブセルを1つ下に移動する
     ActiveCell.Offset(1, 0).Select
    
     'iの繰り返し処理
      Next i
    
   End Sub


こんな感じに2つずつ増えていますね。

お疲れ様でした。
ここで一旦、写真で休憩を挟みます。

江ノ電、七里ヶ浜の海です。


では、今度はFor Nextループで1ずつ減らすループを作ります。
考え方としては、Stepの後に「-1ずつ増やす」と言うイメージです。

例として、江ノ電の電車の待ち時間をループで1分減らしていくサンプルを作りました。
「あと i分 で 鎌倉行きの電車が到着します。」と出力します。

先ほどのプログラムの下に出力するので、アクティブセルをA18とします。
また、ループを抜けた後に「電車が到着しました!!」と出力してから、セルを下に1つ移動します。

Sub ループ3()
   
   'カウンタ変数iを整数型で宣言
   Dim i As Integer
    
   'Excelのワークシート「はじめてのループ」のセルA18をアクティブセルにする
   Worksheets("はじめてのループ").Range("A18").Select
   
   '<<ここからループ>>
  'Forループで10から1まで1ずつ減らす
    For i = 10 To 1 Step -1
     
     'アクティブセルに「あと i分 で 鎌倉行きの電車が到着します。」と出力
     ActiveCell.Value = "あと " & i & " 分で 鎌倉行きの電車が到着します。"
    
     'アクティブセルを1つ下に移動する
     ActiveCell.Offset(1, 0).Select
    
     'iの繰り返し処理
      Next i

     '<<ここから、ループを抜けた後の処理>>
   '「電車が到着しました!!」と出力
     ActiveCell.Value="電車が到着しました!!”

    'セルを1つ下に移動する
    ActiveCell.Offset(1,0).Select
    
   End Sub



最後にシートをキレイにして終了致します。
シートをクリアした後、ホームポジションであるセルA1を選択します。

Sub シートのクリア()

'ワークシート「はじめてのループ」をクリアする
Worksheets("はじめてのループ").Cells.Clear

'セルA1を選択する
Range("A1").Select

End Sub

皆さま、大変お疲れ様でした。
この記事最後のブレイクタイムPhotoは・・・

江ノ電 鎌倉高校前の海と、

江ノ電グッズのタオルです。

お優しい方は、私のThreadsフォローもお願いします!!

https://www.threads.net/@nekosiestr77

やった〜〜〜!!!

あなたのことが、とっても、
大好きです☆*:.。. o(≧▽≦)o .。.:*☆

最後までご精読、誠にありがとうございました!!

仕事や勉強のリフレッシュに、趣味で写真を撮っておりますので、宜しかったら フォトストック写真ACさん の投稿もご覧頂けますと、大変嬉しい限りでございます!!

こちら、無料の「ダウンロードユーザー」に登録して頂けると、無料で写真のダウンロードが可能になります。

※ 先にGoogleアカウントを作成して頂くと、登録が ラク です♪

写真素材素材【写真AC】

 

最後までご精読、誠にありがとうございました!!

自己紹介


VBA自作サンプルプログラム集へ戻る

取りあえず事務職で働きたいから手っ取り早くExcel教えてくれ


MOSなどの資格試験対策

04VBAのIF分岐をドラクエ・メタルスライムで習得!!

この記事では、VBAのIF文による分岐を、ドラクエのメタルスライムを攻撃するという設定で習得します。

メタルスライムのHPを100として、プレイヤーの攻撃レベルが100以上だったらメタルスライムを倒せるというコードを書いていきます。

文字列型変数「敵の名前」に「メタルスライム」と代入して、攻撃レベルに数字を入れて、IF文による分岐をします。

攻撃レベルが100以上の時は、「メタルスライムを倒した!!」と表示させ、それ以外では何も表示させないコードです。

Sub IF文1()
     
  '文字列型変数「敵の名前」と数値型変数「攻撃レベル」を宣言
  Dim 敵の名前 As String, 攻撃レベル As Integer

  '変数「敵の名前」に「メタルスライム」を代入
  敵の名前 = "メタルスライム"

  '攻撃レベルを入力
  攻撃レベル = InputBox("攻撃レベルを入力して下さい。")
       
   'IF文による分岐 100以上かどうか
       If 攻撃レベル >= 100 Then
         MsgBox 敵の名前 & "を倒した!!  "
       End If
   
   End Sub

実行してみます。

まずは100以上の値、120を入力します。

「メタルスライムを倒した!!」とメッセージが表示されました。

今度は100未満の80を入力します。

何も起こりませんでした。

お疲れ様でした。
ここで一旦、写真で休憩を挟みます。

スカイツリーです。
浅草駅から少し歩いた所から撮りました。


次に、100未満だったら、「少しくたばった。」と表示されるようにElse を用いてコードを修正します。

Sub IF文2()
     
  '文字列型変数「敵の名前」と数値型変数「攻撃レベル」を宣言
  Dim 敵の名前 As String, 攻撃レベル As Integer

  '変数に代入
  敵の名前 = "メタルスライム"

  '攻撃レベルを入力
  攻撃レベル = InputBox("攻撃レベルを入力して下さい。")
       
    'IF文による分岐 100 以上かどうか
       If 攻撃レベル >= 100 Then
         MsgBox 敵の名前 & "を倒した!!  "
     Else '←ここを修正
        MsgBox 敵の名前 & "は、少しくたばった。"
       End If
   
   End Sub

実行してみます。
まずは120を入力すると、先ほどのプログラムと同じように「メタルスライムを倒した!!」と表示されました。

では、80を入力します。

「少しくたばった」と表示されました。

お疲れ様でした。
ここで一旦、写真で休憩を挟みます。

スカイツリー限定、「ソラカラちゃんパフェ」です。


さらに、100未満であっても、80以上では
「勇者頑張れ!!もう一息!!」というメッセージを表示させます。
また、80未満の場合は、「YOU LOSE….」と表示させます。

Sub IF文3()
     
  '文字列型変数「敵の名前」と数値型変数「攻撃レベル」を宣言
  Dim 敵の名前 As String, 攻撃レベル As Integer

  '変数に代入
  敵の名前 = "メタルスライム"

  '攻撃レベルを入力
  攻撃レベル = InputBox("攻撃レベルを入力して下さい。")
       
    'IF文による分岐 100 以上かどうか
       If 攻撃レベル >= 100 Then
         MsgBox 敵の名前 & "を倒した!!  "
       ElseIf 攻撃レベル>=80 Then  '←ここを修正
         MsgBox "勇者頑張れ!!もう一息!!"
       Else
        MsgBox "YOU LOSE...."
       End If
   End Sub

実行してみます。
少しややこしくなってしまったので、全てのケースでトレースして行きます。

100以上の120を入力すると、

では、80以上の90を入力すると、

最後に、80未満の70を入力すると

この様に、全てのケースのトレースが出来ました。

お疲れ様でした。
ここで一旦、写真で休憩を挟みます。

写真は、スカイツリーと河津桜です。


最後に、登場したキャラが「メタルモンスター」でしたら、「勇者はメタルモンスターを攻撃した!」と表示して、そうでなければ「こんにちは。」と挨拶をするプログラムを作ります。

Sub IF文4()
     
  '文字列型変数「ターゲット」と「登場キャラ」を宣言
  Dim ターゲット As String, 登場キャラ As String

  '変数ターゲットに「メタルスライム」を代入
  ターゲット = "メタルスライム"

  '登場キャラを入力
  登場キャラ = InputBox("登場キャラを入力して下さい。")
       
    'IF文による分岐 メタルスライムかどうか
       If 登場キャラ = ターゲット Then
         MsgBox "勇者は" & ターゲット & "を攻撃した!!  "
       Else
        MsgBox 登場キャラ & "さん、こんにちは。"
       End If
   End Sub

実行します。
登場キャラに「メタルスライム」と入力すると、

※文字の先頭や後ろにスペースが入っていると、正しく分岐されないので、インプットボックス内にスペースが入っていないかご確認をお願い致します。

この様にメッセージが出力されました。

メタルスライム以外の、例えば「村人」と入力すると、

「こんにちは。」と出力されました。

皆さま、大変お疲れ様でした。
この記事最後のブレイクタイムPhotoは・・・

スカイツリーからの眺めです。

ところで、何故普通のスライムではなく「メタルスライム」なのか、ということですが、個人的にはメタルスライムが好きなんですよね。
好きなのにプログラムの中で一杯攻撃しちゃって、メタルスライムさん、
ごめんねm(_ _)m

最後までご精読、誠にありがとうございました!!

仕事や勉強のリフレッシュに、趣味で写真を撮っておりますので、宜しかったら フォトストック写真ACさん の投稿もご覧頂けますと、大変嬉しい限りでございます!!

こちら、無料の「ダウンロードユーザー」に登録して頂けると、無料で写真のダウンロードが可能になります。

※ 先にGoogleアカウントを作成して頂くと、登録が ラク です♪

写真素材素材【写真AC】

 

最後までご精読、誠にありがとうございました!!

自己紹介


VBA自作サンプルプログラム集へ戻る

取りあえず事務職で働きたいから手っ取り早くExcel教えてくれ


MOSなどの資格試験対策

09 VBAのSelect case文で打ち上げ花火を上げよう

この記事ではVBAのSelect case文を、打ち上げ花火に例えて解説しております。

IF文は、2つか3つぐらいの分岐にでは良く使いますが、流石に7つの分岐となると、IF、IF、IF・・・・とIFを7回も書くのは面倒ですね。

そんな時に便利なのが、Select case文です。

それでは、これからあなたが打ち上げ花火を上げるとして、赤、 青、黄、緑、ピンク・・・・と色を指定して花火を打ち上げるイメージで、Select case 文を学習して行きます。

まず、Excel側でシートを新しく作って、そのシートに「花火」と名付けます。
シートはExcel内の部品であり、それを「オブジェクト」と言います。

花火の色は、文字型の「色」という変数を使って、「赤、青、黄、ピンク、緑、紫、オレンジ」の7色の 花火を打ち上げるという、分岐処理を書いていきます。
実際には、ワークシートの色を7色から選択して、全て塗りつぶします。

それ以外の色が入力されたら、7色のうちのいずれかを入力する様に、メッセージボックスで出力します。

早速、コードを掲載します。
Interior.Color=vb色、または、Interior.Color=RGB指定で、塗りつぶす色を指定します。

Sub 打ち上げ花火()

'文字列型の変数「色」を宣言
Dim 色 As String
 
'インプットボックスで色を入力
 色 = InputBox("赤、青、黄、ピンク、緑、紫、オレンジ", "打ち上げ花火の色を入力して下さい。")


 'Select 文の開始
 Select Case 色
  
  ' 「赤」を入力した場合  
    Case "赤":
    Worksheets("花火").Cells.Interior.color = vbRed

  ' 「青」を入力した場合
    Case "青":
    Worksheets("花火").Cells.Interior.color = vbBlue

   ' 「黄」を入力した場合
    Case "黄":
    Worksheets("花火").Cells.Interior.color = vbYellow


   ' 「ピンク」を入力した場合
     Case "ピンク":
   Worksheets("花火").Cells.Interior.color = vbMagenta


   ' 「緑」を入力した場合
    Case "緑":
    Worksheets("花火").Cells.Interior.color = vbGreen


   ' 「紫」を入力した場合
    Case "紫":
   Worksheets("花火").Cells.Interior.color = RGB(200, 0, 255)


 ' 「オレンジ」を入力した場合
   Case "オレンジ":
   Worksheets("花火").Cells.Interior.color = RGB(255, 200, 0)


  ' else の場合
 Case Else:

  'メッセージボックス
  MsgBox "「赤、青、黄、ピンク、緑、紫、オレンジ」のいずれかの色を入れて下さい"
 

'Select文の終わり
 End Select

'シート「花火」のセルA1を選択
 Worksheets("花火").Range("A1").Select
 
End Sub

コードが書けたらボタンを作成します。
ボタンは、Excelシートの開発 → 挿入 → フォームコントロールのボタンマークで、マクロ「打ち上げ花火」を登録します。

では、今作ったボタンを押して実行します。

インプットボックスに「黄」と入力します。
(入力するとき、スペースが入らないように気をつけて下さい。もしも入ってしまったら、elseのところに分岐してしまいますので、特に字の前に気をつけて、スペースがあったら削除してから「OK」を押して下さい。)

実行結果です。

こんな感じでシートが真っ黄色になりました。
イメージ的には黄色の花火を打ち上げている感じです。

他の色も試してみます。

「紫」

「赤」

きちんと分岐出来ました。
それでは、elseの時の分岐を行います。

例えば「小豆色(あずき色)」と入力します。

実行結果です。

もしも、上記以外の色を入れると、 このようなメッセージボックスが出て、elseの時の分岐が行えました。


ここで、ブレイクタイムとしてミュージックビデオを掲載します。

DAOKOさん×米津玄師さんの「打上花火」

歌詞の中に「打ち上げ花火」が出てくる「夏祭り」のオリジナルはジッタリン・ジンさん

カバーはWhiteberryさん

懐かしいな。

皆さま、大変お疲れ様でした。
この記事最後のブレイクタイムPhotoは・・・

撮りたてホヤホヤの、いたばし花火大会2023の写真です。

仕事や勉強のリフレッシュに、趣味で写真を撮っておりますので、宜しかったら フォトストック写真ACさん の投稿もご覧頂けますと、大変嬉しい限りでございます!!

こちら、無料の「ダウンロードユーザー」に登録して頂けると、無料で写真のダウンロードが可能になります。

※ 先にGoogleアカウントを作成して頂くと、登録が ラク です♪

写真素材素材【写真AC】

 

最後までご精読、誠にありがとうございました!!

自己紹介


VBA自作サンプルプログラム集へ戻る

取りあえず事務職で働きたいから手っ取り早くExcel教えてくれ


MOSなどの資格試験対策

03「ザ・スーパーマリオブラザーズ・ムービー」で覚えるVBAの変数とコメントの基本的な使い方

この記事では、VBAの変数の基本的な使い方コメントの書き方を、2023年にヒットした映画、「ザ・スーパーマリオブラザーズ・ムービー」を通して学習します。

変数は、箱をイメージして下さい。
Amazonの段ボール箱でも何でも良いです。
注文した品物によって、段ボールの大きさが変わりますよね。

数値でしたら、Integerという大きさの箱を使います。
これは服のサイズで言ったら、Sサイズ、Mサイズ、Lサイズ、みたいなものでしょうか。

その変数の箱に、「変数に付けたい名前」を書いた紙を貼るイメージで、
変数に名前を付けます。

下記のプログラムでは、マリオドンキーコングに攻撃する「回数」に数値型の変数を割り当てます。

その変数である、ドンキーコングに攻撃する「回数」を、プログラム実行中にユーザーが好きな値を入力出来るように、InputBoxという入力するボックスを使って、回数を入力します。

変数を定義するとき、Dimと記述します。
コードを分かりやすくするため、コメントを入れました。
コメントは、「’」(シングルクォーテーション)で記述します。
数値と文字列を連結するのに「&」(アンパサンド)を使います。

 Sub 変数1()
    
    Dim 回数 As Integer '数値型の変数「回数」を宣言
    回数 = InputBox("ドンキーコングを攻撃する回数を入力して下さい。")
    MsgBox " マリオはドンキーコングを" & 回数 & " 回攻撃した!!"
 
 End Sub

回数を5とします。
InputBoxに入力します。

Enterを押すと、このようにメッセージボックスで、入力した回数が表示されました。

お疲れ様でした。
ここで一旦、写真で休憩を挟みます。

みなとみらいの夜景、横浜ランドマークタワーから撮影しました。


次に、文字を入れる変数の箱を用意します。
箱の大きさは、Stringというサイズの箱を用意します。
箱には「敵の名前」と書いた紙を貼っておくイメージです。
InputBoxで、「敵の名前」に入れる名前を「クッパ」と入力します。

数値型の回数には「678」を入れます。
今度は結果をイミディエイトウィンドウに出力します。

Sub 変数2()
    
    '文字列型の変数「敵の名前」と数値型の「回数」を宣言
    Dim 敵の名前 As String, 回数 As Integer
    
    敵の名前 = InputBox("敵の名前を入力して下さい。")
    回数 = InputBox("攻撃する回数を入力して下さい。")
    Debug.Print "マリオは" & 敵の名前 & "を" & 回数 & " 回攻撃した!!"
 
 End Sub

「クッパ」と入力してEnterを押します。

「678」と入力してEnterを押します。全角でも大丈夫です。

イミディエイトウィンドウの出力結果です。

お疲れ様でした。
ここで一旦、写真で休憩を挟みます。

お台場レインボーブリッジです。


次に、変数の演算をしてみましょう。
マリオはクッパにパンチとキックをして攻撃をします。
変数「パンチ」の回数と、変数「キック」の回数を合計して、
その合計値を変数「ダメージ」に格納します。

式で書くと、

ダメージ=パンチ+キック

になります。

Sub 変数3()
    
    '文字列型の変数「敵の名前」と数値型の「ダメージ」を宣言
    Dim 敵の名前 As String, ダメージ As Integer
    
    '数値型の変数パンチとキックを宣言
    Dim パンチ As Integer, キック As Integer
    
    '敵の名前やパンチ、キックの回数を入力
    敵の名前 = InputBox("敵の名前を入力して下さい。")
    パンチ = InputBox("マリオのパンチの回数を入力して下さい")
    キック = InputBox("マリオのキックの回数を入力して下さい")
    
     'ダメージを「足し算」して求める
     ダメージ = パンチ + キック
    
    'メッセージボックスに結果を出力
    MsgBox "マリオは" & 敵の名前 & "に" & ダメージ & "のダメージを与えた!!"
 
 End Sub

実行してみます。

名前に「クッパ」と入れます。

マリオのパンチの回数を「2」と入力します。

マリオのキックの回数を「4」と入力します。

出力結果です。

上記のプログラムではメッセージボックスに出力しましたが、今度はExcelシート上のセルに出力してみます。

下のコードに「←を変更」と書いた所と、プロシージャー名を「変数4」にした箇所以外は、そのままです。

Sub 変数4()
    
    '文字列型の変数「敵の名前」と数値型の「ダメージ」を宣言
    Dim 敵の名前 As String, ダメージ As Integer
    
    '数値型の変数パンチとキックを宣言
    Dim パンチ As Integer, キック As Integer
    
    '敵の名前やパンチ、キックの回数を入力
    敵の名前 = InputBox("敵の名前を入力して下さい。")
    パンチ = InputBox("マリオのパンチの回数を入力して下さい")
    キック = InputBox("マリオのキックの回数を入力して下さい")
    
     'ダメージを「足し算」して求める
     ダメージ = パンチ + キック
    
    ' Excelシート上のセルに出力  ←ここを変更
    Range("A1").Value = "マリオは" & 敵の名前 & "を"
    Range("A2").Value = パンチ & "回" & "パンチして、"
    Range("A3").Value = キック & "回" & "キックして、"
    Range("A4").Value = ダメージ & "のダメージを与えた!!"
    
 
 End Sub

実行結果は、このようにExcelのシートに出力されました。

お疲れ様でした。
ここで一旦、写真で休憩を挟みます。

江ノ電 鎌倉高校前の海



今度はRangeでは無く、Cells指定にします。
これまで、

ダメージ = パンチ + キック

と計算していた所を掛け算にして、

ダメージ = パンチ * キック

としてみます。
×は「*」(アスタリスク)を使います。

 Sub 変数5()
    
    '文字列型の変数「敵の名前」と数値型の「ダメージ」を宣言
    Dim 敵の名前 As String, ダメージ As Integer
    
    '数値型の変数パンチとキックを宣言
    Dim パンチ As Integer, キック As Integer
    
    '敵の名前やパンチ、キックの回数を入力
    敵の名前 = InputBox("敵の名前を入力して下さい。")
    パンチ = InputBox("マリオのパンチの回数を入力して下さい")
    キック = InputBox("マリオのキックの回数を入力して下さい")
    
     'ダメージを「掛け算」して求める ← ここを掛け算にします。
     ダメージ = パンチ * キック
    
    ' Excelシート上のセルに出力  ← Cellsで指定しています。
    Cells(8,2).Value = "マリオは" & 敵の名前 & "を"
    Cells(9,3).Value = パンチ & "回" & "パンチして、"
    Cells(10,4).Value = キック & "回" & "キックして、"
    Cells(11,5).Value = ダメージ & "のダメージを与えた!!"
    
 
 End Sub

同じように、
敵の名前=「クッパ」
キック=「2」
パンチ=「4」
と入力しました。

その出力結果です。
ダメージは2×4で8になっています。

掛け算を追えたところで、今度は「べき乗」を求めます。
掛け算では 2×4で8でしたが、べき乗にすると、2を4回かけるので、2×2×2×2=16になります。

(2の何乗に興味のある方は、ITパスポート基本情報記述者試験のページをご参照下さい。)

べき乗は、キーボード右上の「へ」の所にあります。
ダメージの計算結果は、メッセージボックスに出力します。

 Sub 変数6()
    
    '文字列型の変数「敵の名前」と数値型の「ダメージ」を宣言
    Dim 敵の名前 As String, ダメージ As Integer
    
    '数値型の変数パンチとキックを宣言
    Dim パンチ As Integer, キック As Integer
    
    '敵の名前やパンチ、キックの回数を入力
    敵の名前 = InputBox("敵の名前を入力して下さい。")
    パンチ = InputBox("マリオのパンチの回数を入力して下さい")
    キック = InputBox("マリオのキックの回数を入力して下さい")
    
    'ダメージを「べき乗」して求める ← ここをべき乗にします。
    ダメージ = パンチ ^ キック
    
    'Excelシート上のセルに出力  ← メッセージボックスに出力します
    MsgBox "マリオは" & 敵の名前 & "に" & ダメージ & "のダメージを与えた!!!"
     
 End Sub

パンチとキックは「半角数字で」入力して下さい。
私の環境では全角で入力したら、オーバーフローしてしまいました。

お疲れ様でした。
ここで一旦、写真で休憩を挟みます。

江ノ電、鎌倉高校前駅の海です。


いよいよ最後です。
「ザ・スーパーマリオブラザーズ・ムービー」の映画チケット代金を出力します。
一般1,500円です。

チケット代は、 Currency(カレンシー)という通過型の箱を用意します。
「チケット代」と紙に書いて、それを箱に貼るイメージです。
文字列型の「映画タイトル」の箱も用意します。
ここでは簡単に、「マリオの映画」と入力します。

Sub 変数7()

'通過型Currencyの変数チケット代と、文字列型映画タイトルを宣言
 Dim 映画タイトル As String, チケット代 As Currency 

 映画タイトル = InputBox("見たい映画のタイトル名を入力して下さい。")
 チケット代 = InputBox("チケット代を入力して下さい。") 

 MsgBox 映画タイトル & "の一般料金は、" & チケット代 & "円です。" 

 End Sub

上記のプログラムを、


映画タイトル:「マリオの映画」


チケット代:「1500」

と入力すると

この様に出力出来ました。

参考にした記事:
【超初心者向き】Subプロシージャの基本を5分で理解する
【VBA】Currency (通貨型変数)
ザ・スーパーマリオブラザーズ・ムービー特別映像解禁
「ザ・スーパーマリオブラザーズ・ムービー」のムビチケ前売り券が12月16日より販売開始


皆さま、大変お疲れ様でした。
この記事最後のブレイクタイムPhotoは・・・

逗子海岸です。

最後までご精読、誠にありがとうございました!!

仕事や勉強のリフレッシュに、趣味で写真を撮っておりますので、宜しかったら フォトストック写真ACさん の投稿もご覧頂けますと、大変嬉しい限りでございます!!

こちら、無料の「ダウンロードユーザー」に登録して頂けると、無料で写真のダウンロードが可能になります。

※ 先にGoogleアカウントを作成して頂くと、登録が ラク です♪

写真素材素材【写真AC】

 

最後までご精読、誠にありがとうございました!!

自己紹介


VBA自作サンプルプログラム集へ戻る

取りあえず事務職で働きたいから手っ取り早くExcel教えてくれ


MOSなどの資格試験対策

02VBAの基本的なメッセージ・セル出力・イミディエイトウィンドウ・ボタンのマクロ登録

この記事から、VBAで本格的なコーディングに入ります。
と言っても、最初は簡単なメッセージを表示させるぐらいですので、是非、肩の力を抜いてご覧下さい。

メッセージの所には、あなたの好きな言葉や推しなどの好きな人等、ご自由に表示して下さい。

ここでは、2023年7月に始動したSNSのThreads(スレッズ)について、
「Threadsフォロー宜しく!!」というメッセージを表示させます。

エディタにこのように記述します。
名称は、全角文字でもOKです。

Sub スレッズ()
        MsgBox "Threadsフォロー宜しく!!"
End Sub

それでは、プレイボタンから実行致します。

マクロ名を選択して実行を押します。

すると、メッセージボックスが表示されました!!

お疲れ様でした。
ここで一旦、写真で休憩を挟みます。

江ノ電、七里ヶ浜の海です。


では、VBAでメモ的に使う、「ちょっとした確認の時に使う」、 「イミディエイトウィンドウ」を表示します。

表示 → イミディエイトウィンドウを選びます。
下の方に表示されたウィンドウがイミディエイトウィンドウです。

用意が出来ましたらコードを書きます。

Sub スレッズ2()
         Debug.Print "Threadsフォロー宜しく!!"
End Sub

これを実行すると、

こんな感じに表示されます。

このイミディエイトウィンドウは、変数の値を確認したい時などにも 便利なので、今後も掲載致します。

お疲れ様でした。
ここで一旦、写真で休憩を挟みます。

いたばし花火大会2019です。コロナ前の最後ですね。


次は、このメッセージを、Excelのセル「A1」に入力します。
このセルA1のことを、「ホームポジション」と言います。

Rangeは、「レンジ」と読みます。
ここではセルの場所を指定する時に使うんだな〜程度に軽く押さえて頂くぐらいで大丈夫です。

Sub スレッズ3()
          Range("A1").Value = "Threadsフォロー宜しく!!"
End Sub

書き終わりましたら実行を押して、いつものExcelの画面に切り替えます。
VBAの画面の左上を押すと切り替わります。

実行すると、

この様にセルA1に入力できます。

他のセルに入力する時は、この様にセルの番地を変えてみます。
例えば、B3に入力したい場合、

Sub スレッズ4()
          Range("B3").Value = "Threadsフォロー宜しく!!"
End Sub

と、セルの番地を変えると、この様に出力されます。

お疲れ様でした。
ここで一旦、写真で休憩を挟みます。

江ノ電七里ヶ浜の海


セル番地の指定方法は、 Rangeで指定する方法と、Cellsで指定する方法があります。これ以降に出て来る、繰返し処理(ループ)を学ぶ時に大事になるので、
早い段階で慣れておきましょう。

セルB3に「Threadsフォローありがとう!!」と上書き入力します。
B3は3行目の2列ですよね。
Cellsで指定する時は、(3,2)と、行を先に書きます。

Sub スレッズ5()
          Cells(3, 2).Value = "Threadsフォローありがとう!!"
End Sub

実行すると、この様にセルの内容が置き換えられました。

お疲れ様でした。
ここで一旦、写真で休憩を挟みます。

江ノ電、鎌倉高校前駅の海


色々入力したので、
一旦シートの入力内容を消去致します。

Sub 一旦クリアする()
    Cells.Clear
End Sub

これで、Excelシートの入力内容が消えていると思います。

それでは、最後にボタンを2つ作って終わります。
ボタンに「スレッズ5」と「クリア」を登録して、ボタンを押すとそれぞれのプログラムが動く様に致します。

開発タブを選択して、挿入 → フォームコントロールのボタンを押します。

Windows

Mac

シートにボタンを描画すると、
このようなダイアログボックスが出て来ます。
さっき作った「スレッズ5」を登録します。

あとは、ボタンのまわりに○が付いている状態で、
文字を編集します。

(左クリックで実行、右クリックで編集が出来ます。)

こんな感じでボタンが出来ました。
同じように、「クリア」ボタンも登録します。

これで、ボタンを押して何度もプログラムを実行することが 出来ました。

皆さま、大変お疲れ様でした。
この記事最後のブレイクタイムPhotoは・・・

江ノ電鎌倉高校前駅の海です。

最後までご精読、誠にありがとうございました!!

お優しい方は、私のThreadsフォローもお願いします!!

https://www.threads.net/@nekosiestr77

やった〜〜〜!!!

あなたのことが、とっても、
大好きです☆*:.。. o(≧▽≦)o .。.:*☆

仕事や勉強のリフレッシュに、趣味で写真を撮っておりますので、宜しかったら フォトストック写真ACさん の投稿もご覧頂けますと、大変嬉しい限りでございます!!

こちら、無料の「ダウンロードユーザー」に登録して頂けると、無料で写真のダウンロードが可能になります。

※ 先にGoogleアカウントを作成して頂くと、登録が ラク です♪

写真素材素材【写真AC】

 

最後までご精読、誠にありがとうございました!!

自己紹介


VBA自作サンプルプログラム集へ戻る

取りあえず事務職で働きたいから手っ取り早くExcel教えてくれ


MOSなどの資格試験対策

01 VBAを始める準備をしよう

この記事ではVBAを始めるまでの準備をコンパクトにまとめました。
まず、Excelを起動して、開発タブを表示させます。

Windowsの方は、
ファイル → オプション → リボンのユーザー定義 → 開発の所にチェックを入れて、OKを押してください。


そうすると、

無事に開発タブが表示されました。

Macの方は、
ExcelをアクティブにするとExcelの画面よりも更に上にメニューが表示されているので、Excel → 環境設定 を選択すると、

この様な画面が表示されますので、赤枠の「表示」を選択します。

するとこのようなダイアログボックスが表示されるので、表示にチェックを入れてウィンドウを閉じます。

Macでも無事に開発タブが表示されました。

エディタの準備をする前に、先に名前をつけて保存をします。
保存って本当にプログラミングでも事務作業でも大事なんですよね。

[F12]を押して、ファイル名に「VBA入力レッスン」など、分かりやすいと思う名前を入力します。

※ 1点注意がございます

「ファイルの種類」は、「Excelマクロ有効ブック(. xlsm)」を指定します。
VBAで動かす時は、普段Excelを使っている時の拡張子がxlsxでは無いので、そこだけ注意が必要になります。

開発タブの一番左のVisual Basicまたは、ショートカットキーで[Alt] + [F11] を押します。

これで、VBAのコードを記述するエディタが開きました。

画面左側の、ThisWorkbookを選択した状態で、挿入 → 標準モジュール の順番にクリックします。

それから、「Module1」を選択します。

その状態で、「オブジェクト名」に「まずは入力の練習から」と入力して[Enter]を押すと、

練習に使うエディタが作成されました。

次から、実際にコーディングしていきます(=^・^=)

お疲れ様でした。
勉強のリフレッシュに、写真で息抜きを致します。

最後までご精読、誠にありがとうございました!!

仕事や勉強のリフレッシュに、趣味で写真を撮っておりますので、宜しかったら フォトストック写真ACさん の投稿もご覧頂けますと、大変嬉しい限りでございます!!

こちら、無料の「ダウンロードユーザー」に登録して頂けると、無料で写真のダウンロードが可能になります。

※ 先にGoogleアカウントを作成して頂くと、登録が ラク です♪

写真素材素材【写真AC】

 

最後までご精読、誠にありがとうございました!!

自己紹介


VBA自作サンプルプログラム集へ戻る

取りあえず事務職で働きたいから手っ取り早くExcel教えてくれ


MOSなどの資格試験対策