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

こちらの記事では、VBAをこれから始めるにあたって、基本的な文法を習得出来るようサンプルを作成致しました。

01 VBAをはじめる準備をしよう 

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

03変数の基礎とコメントの書き方を「ザ・スーパーマリオブラザーズ・ムービー」で覚える 

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

05 はじめてのループ ForNext

06 For Next 2重ループを使って「密です!!」ゲーム

07 For Next ループ で 東京観光 ♪ 

08 Select Case文でエレベーター探検!!

09 Select Case文で打ち上げ花火を上げよう

10 Do While Until LOOP で【前】判断と【後】判断

11 サザエさんで覚える配列

プログラミングのアンケートにご協力頂ける方はこちらのフォームで勉強法など色々と教えて下さい。

 

自己紹介へ


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


MOSなどの資格取得


Google Workspaceへ



息抜きに、写真で癒し(=^x^=)

06For Nextループその2 ExcelVBAで密です!ソーシャルディスタンス!!

新型コロナが2類から5類に引き下がり、イベントでは「密です!」状態ですね。
ExcelVBAで単純ながら、密ですゲームみたいなものを作ってみました。

ボタンを2つ作ります。
1つ目のボタンは「密です!!」、2つ目のボタンは「ソーシャルディスタンス」です。
ボタンを押したらプログラムが動くようにします。

先に、これからコーディングするプログラムの実行結果の画面を掲載します。
ボタン「密です!!」を押すと、

このように「人」が密集します。
3密ですね。

では、ボタン「ソーシャルディスタンス」を押します。

で、このように感覚を空けました。

各ボタンについて解説します。

●「密です!!」ボタン
Range(“A1:K11”) = “人”で、セルA1からK11までの全てのセルに、「人」という文字を入れます。

●「ソーシャルディスタンス」ボタン
一旦シートを、Cells.Clear でクリアをしてから、Range(“A1”).Select で、ホームポジションのA1を選択して、この位置を基準をして、2行2列置きに「人」を入れて間隔を保ちます。

カウンタ変数の行をi、列をjにします。
(ここで、カウンタ変数って何? ループまだちょっと自信がないよ!と言う方は前回の記事の、はじめてのFor Nextループ をご覧下さい)

カウンタ変数iは外側のループで行(縦)を操作、jは内側のループで列(横)を操作します。

外側のループを固定して、内側のForループでjを2つずつ増やし、内側のループを抜けてから外側のループでiを2つずつ増やします。

コードは以下のようになります。

● ボタン「密です!!」に登録するコード

Sub 密です()
 
'セルA1からK11まで「人」で埋めつくして密にする
Range("A1:K11") = "人"

End Sub

● ボタン「ソーシャルディスタンス」に登録するコード

Sub ソーシャルディスタンス()

' カウンタ変数iとjを宣言する
Dim i As Integer, j As Integer

' シートをクリアする
 Cells.Clear

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

'外側のループでiを0から10まで2ずつ増やす
For i = 0 To 10 Step 2

    '内側のループでjを0から10まで2ずつ増やす
    For j = 0 To 10 Step 2
    
     'セルA1を基準として、下にi、右にj分移動したセルをアクティブにして「人」と言う字を入れる
      ActiveCell.Offset(i, j).Value = "人"
      
     '内側のループjを進める
     Next j
     
' 外側のループiを進める
Next i

End Sub

コードが書けたらボタンを作成します。
ボタンは、開発タブから作れます。

Windowsの場合は開発タブは、任意のタブを右クリックして「リボンのユーザー設定」の右側のメニューからチェックで表示できます。

または、ファイル → オプション → リボンのカスタマイズ → リボンの設定 から表示する方法もあります。

Macの場合は、Excel → 環境設定 → 表示 → 一番下あたりの開発タブにチェックを入れます。

以下の様に感じにシートを用意して、ボタンを2つ作ります。

iとjの挙動が分かり辛い場合は、外側のループのiをコメントアウトして、i=0で固定して、内側のループのみ動かしてみると少し分かりやすくなるかも知れません。

 'i= 0で固定して内側のループのみを動かす

Sub ソーシャルディスタンス()

' カウンタ変数iとjを宣言する
 Dim i As Integer, j As Integer


' シートをクリアする
Cells.Clear


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


'外側のループでiを0から10まで2ずつ増やす
'For i = 0 To 10 Step 2  ←コメントアウト

    '内側のループでjを0から10まで2ずつ増やす
    For j = 0 To 10 Step 2
    
     'セルA1を基準として、下にi、右にj分移動したセルをアクティブにして「人」と言う字を入れる
     ActiveCell.Offset(0, j).Value = "人" ' ← iを0にする
     
     '内側のループjを進める
     Next j
     
' 外側のループiを進める
'Next i  ←コメントアウト

End Sub

すると、(i,j)は(0,0)、(0,2)、(0,4)・・・(0,10)とセルを移動するので、この様な実行結果になります。

また、iを2にすると、
(i,j)は、(2,0)、(2,2)、(2,4)・・・(2,10)と移動するので、

この様になります。

二重ループは慣れるまでちょっと時間がかかりましたので、私は外側のループをコメントアウトして固定をしてみた所、だいぶ解きほぐれて来ました。

二重ループに悩まれていらっしゃる方の一助になりましたら幸いでございます。

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

立川市の国営昭和記念公園で撮影した小ぶりのひまわり、サンフィニティです。

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

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

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

写真素材素材【写真AC】

 

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

自己紹介


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

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


MOSなどの資格試験対策

07 VBA For Next 2重ループ で東京観光 ♪

この記事では、VBAの二重ループを使って、東京観光が味わえる様なコードを掲載しております。

ちょっと、ループが心配だという方は先に
05 はじめてのFor Nextループ(ループは1つのみ)
06 二重ループでソーシャルディスタンス(二重ループがはじめての方向け)
をご覧頂けますと幸いでございます。

では早速、二重ループを使って、「スカイツリー ・ お台場 ・ 新宿都庁 ・ 水元公園」の観光をご案内致します!!

この上記の4箇所の「観光地」が、「外側のループ」で変数iを使います。

内側のループでは、「写真を撮る・帰宅するSNSにアップする」と、「やること」を変数jで使います。

つまり、

観光地を外側のループで「スカイツリー」で固定して、内側のループで「写真を撮る」・「帰宅する」・「SNSにアップする」の3つ「やること」を行って、内側のループを抜けます。

次に、外側のループで観光地を「お台場」に固定して、「写真を撮る」・「帰宅する」・「SNSにアップする」の、3つ「やること」を行って、内側のループを抜けて、次の場所の「新宿都庁」に移動して、最後に「水元公園」まで繰り返します。


以上で、4×3で12の観光旅行の工程を楽しみます!!

「観光地」を外側ループのカウンタ変数 i、 「やること」を内側ループのカウンタ変数 jにして、ループをぐるぐる回して東京観光を楽しむイメージです。

この東京観光の二重ループのイメージを表にすると、

この様な表にまとまりました。
この表は、シート「東京観光」に作成しました。
では下記のコードで、同じシート「東京観光」の表の右1つ開けて、セルD1に出力します。

※ 先にシート「東京観光」を作成してから実行して下さい。

セルの値を利用するので、観光地のiは1から12まで3つ飛ばしで増やし、やることのjは1から3の1つずつ増やします。
(「やること」の、「写真を撮る」・「帰宅する」・「SNSにアップする」は、内容が同じなので、最初の「スカイツリー」の右の値である2行目、3行目、4行目を使います。)

まず、観光地「スカイツリー」はセルA2です。
Cellsで表わすと、セルA2はCells(2,1)になります。
Cellsは(行 , 列)と表記するので、(タテ , ヨコ)です。
外側の変数は「i」なので、i=1の時、Cells(i+1,1)になります。

内側の最初のやることは、「写真を撮る」で、 これはセルB2です。
このセルB2はCells(2,2)なので、j=1の時はCells(j+1,2)でCells(2,2)になります。
「観光地」と「やること」を「&」で結合しています。

それでは、内側をjを1~3まで回わすので、次はj=2です。
「帰宅する」はセルB3なのでCellsでは(3,2)です。
j=2で、Cells(j+1,2)は、Cell(3,2)になります。

その次はj=3で、「SNSにアップする」はセルB4なのでCellsでは(4,2)です。
Cells(j+1,2)は Cells(4,2)になります。

内側ループの最後は「SNSにアップした」なので、jが3まで行ったら内側のループを抜けて、外側の場所を「お台場」に移動します。

二重ループとはこの様に、内側を速く回して、外側をゆっくり固定しながら回す、
というイメージ
でグルグル回していきます。

このプログラムを動かして出力する側の最初のセルD1は、黄色い所です。
これを1つずつ下に下げていきます。ActiveCell.Offset(1,0).Selectで、
Offsetを使って、相対的に移動します。

場所が「スカイツリー」から「お台場」に移動する時、1つ行を空けます。
その部分はIF文を使っていますね。
これは外側の変数が最後の「スカイツリー」〜「都庁」の時だけ、下に1行空けるように移動するといった、調整しています。

スカイツリーの時のiの値は1、お台場では4、都庁では7、水元公園では10になります。

最後の観光地の水元公園の時にi=10になるので、「それ以外の時には」次の場所に移る前に空白行を空けたいので、1行下に移動します。

これは、言葉で伝えるとややこしいので、コメントアウトしてみたり、実際にコーディングして、 感覚的にあ~、なるほどって感じで感覚を掴んで行きます。

VBAのコードはこちらです。

Sub 二重ループで東京観光()

'ループのカウンタ変数iとjを宣言
 Dim i As Integer, j As Integer
 

'シート「東京観光」をアクティブにする
Worksheets("東京観光").Activate


'表の右1つ開けてセルD1をアクティブにする
Range("D1").Activate


 '外側のループのカウンタ変数iで「観光地」を表す
  For i = 1 To 10 Step 3
  
  
    '内側のループのカウンタ変数jで「やること」を表す
    For j = 1 To 3
    
    
    'アクティブセルに「観光地」と「やること」を出力する
     ActiveCell.Value = Cells(i + 1, 1).Value & Cells(j + 1, 2).Value
     
     
     
   'セルを1つ下に移動する
    ActiveCell.Offset(1, 0).Select


     '内側ループを進める
    Next j


 '内側ループを抜けて外側ループに入る
 'もしもi<10場合は、次の観光地に移る前に1行空ける
 If i < 10 Then
 ActiveCell.Offset(1, 0).Select
 End If
 
'外側ループを進める
 Next i
 
End Sub

実行結果です。

このように、次の場所に移る際に1行空けていますね。
これは先ほどのIF文の所をコメントアウトすると、

このように、ちょっと見辛い出力結果になってしまいました。
プログラミング学習で、「これはどういう処理なんだろう・・・?」と疑問に思ったことは、コメントアウトしてみて出力結果から思考すると、プログラミング学習が一層楽しめると思います。

このコードとは話が逸れますが、プログラミング学習よりも大事なことをお伝えします!!

SNSに写真をアップするのは、「帰宅後・事後報告」でお願いします。
外出中にアップすると、「あの家、留守だ!!」と思われて、「特定屋」といった人達に特定されて、ご自宅が危険になってしまう恐れもあります。

そのため、このプログラムの内ループでも、「 写真を撮る → 帰宅する → SNSにアップする」という流れに致しました。

皆さまが(私も)安心安全にプログラミング学習を進められることを願っております。

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

このプログラムに登場した観光地です。

● スカイツリー(2022年11月、浅草から撮影したスカイツリーのライトアップは「粋」です。)

● お台場(2022年12月、お台場海浜公園から冬のレインボー花火大会を撮影しました。)

●新宿都庁(2019年4月、世界自閉症デーのライトアップ)

● 水元公園(2018年GWに新緑のグリーンエクササイズを楽しみました。)


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

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

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

写真素材素材【写真AC】

 

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

自己紹介


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

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


MOSなどの資格試験対策

08 VBA初めてのSelect Caseによる条件分岐をエレベーターを例に解説

この記事ではVBAでSelect Case文を学習します。
この文法を「エレベーター」を使って学習したことが、私には分かりやすかったです。

このSelect Caseでは条件分岐を行います。
イメージとして、あなたがエレベーターに乗っている所を想像して見て下さい。

押したボタンによって、止まる階が変わりますよね。
ですので、エレベーターはまさに「リアルSelect Case」なんです!!

電車を降りて駅の改札を出て、駅ビルに入りました。
ここは地下1階です。

話を簡単にする為に、この駅ビルは地下と地上1〜4階までのシンプルな駅ビルにします。

図で表すとこんな感じです。

文字でも図に合わせて書きます。

4 4階:レストラン街
3 3階:文房具店
2 2階:洋服屋
1 1階:パン屋
現在あなたは「地下・改札」にいます。

では、早速コードを見ていきます。

ボックス内の改行は「vbCrLf」を使い、「&」で結合します。
コードを改行する時は「_ (アンダーバー)」を使います。

Sub エレベーターで掴むSelectCase()

 ' 数値型の変数フロアを宣言
 Dim フロア As Integer

 'インプットボックスを使って降りる階を表示
 フロア = InputBox("1:1階のパン屋" _
 & vbCrLf & "2:2階の洋服屋" _
 & vbCrLf & "3:3階の文具店" _
 & vbCrLf & "4:4階のレストラン街", "何階で降りますか?")


'Select文を開始
 Select Case フロア

 '1階
 Case 1:
 MsgBox "1階に到着しました" _
 & vbCrLf & "「パン屋だ!!美味しそう!!」"


 '2階
 Case 2:
 MsgBox "2階に到着しました" _
 & vbCrLf & "「洋服屋だ!!良いジャケットあるかな♪」"


'3階
 Case 3:
 MsgBox "3階に到着しました" _
 & vbCrLf & "「ボールペンあるかな。」"


'4階
 Case 4:
 MsgBox "4階に到着しました" _
 & vbCrLf & "「広島風お好み焼き食べたい!!」"

'範囲外の場合
 Case Else
 MsgBox "スタッフオンリー です。1〜4を入力して下さい。"
 
 'Select文の終了
End Select

End Sub

1~4を入力すると、エレベーターであなたが行きたい階で止まります。
例えば、「4」を押すと、レストラン街に到着します。

インプットボックスに「4」と入力します。


これでエレベーターのスイッチで4階を押せました。

4階に到着すると、広島風お好み焼きが食べられるみたいです。

では、範囲外の「9」を入力してみます。

と、Elseの場合も処理されました。

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

目白庭園の紅葉です。

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

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

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

写真素材素材【写真AC】

 

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

自己紹介


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

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


MOSなどの資格試験対策

11 VBAの配列をサザエさんで覚える

配列ってなんだか難しそうな感じですよね。
でも、きっと大丈夫です!!

この記事では国民的アニメの「サザエさん」を使って、VBAの配列を勉強して行きます。

サザエさんのメインキャラを、「サザエ一家」と言う 配列に格納して、デバックプリントを使って、イミディエイトウィンドウに書き出して(出力して)行きます。

Excel側でシート「国民的アニメ」を用意して、表の中のキャラクター名を
配列「サザエ一家」に格納します。

配列は、

サザエ一家[0]=磯野波平
サザエ一家[1]=磯野フネ
サザエ一家[2]=フグ田マスオ
サザエ一家[3]=フグ田サザエ
サザエ一家[4]=磯野カツオ
サザエ一家[5]=磯野ワカメ
サザエ一家[6]=フグ田タラオ

です。

この様に配列は「0から」始まります。
この0から始まる部屋番号みたいなものを、添え字といいます。

では、下記のコードで実際に「波平さん(=0) ~ タラちゃん(=6)」までの名前を配列「サザエ一家」に格納して、それをイミディエイトウィンドウに出力します。

Sub 配列1()

'文字列型の配列「サザエ一家(6)」と、添え字の変数i(数値型)を定義
    Dim サザエ一家(6) As String, i As Integer
 
'ループでiを0から6まで配列の長さ分指定する
     For i = 0 To 6

'ExcelのセルB3の磯野波平から順番に配列「サザエ一家」に格納する
       サザエ一家(i) = Worksheets("国民的アニメ").Cells(3 + i, 2).Value

'デバックプリントに配列「サザエ一家」を出力する
       Debug.Print サザエ一家(i)

'配列の添え字iを進める
   Next i

End Sub

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


では次に、サザエさん一家の中から代表して、「磯野波平」さんに一家のメンバーカラーを割り当ててみましょう。

メンバーカラーも、配列を使います。
配列名を「メンバーカラー」とします。

配列メンバーカラーの型は、Variant(バリアント型)という何でも入る型を使います。
このVariant型は、段ボール箱に四次元ポケットの機能を付けたようなイメージです。

ここでも、配列は0から始まります。

インプットボックスに0から4までの数字を入力して、波平さんにメンバーカラーを割り当てます。

「配列メンバーカラー」は

メンバーカラー[0]=赤
メンバーカラー[1]=青
メンバーカラー[2]=黄
メンバーカラー[3]=緑
メンバーカラー[4]=紫

としました。

ここでは波平さんに4番の「紫」のメンカラを割り当てます。

出力結果です。

コードです。
配列はArrayを使って作成します。

Sub 配列2()

'Variant型の配列「メンバーカラー」と、数値型の「番号」を宣言
    Dim メンバーカラー As Variant, 番号 As Integer

'配列メンバーカラーの色を「赤、青、黄、緑、紫」とする
      メンバーカラー = Array("赤", "青", "黄", "緑", "紫")

'インプットボックスを使って、メンバーカラーの番号を入力する
      番号 = InputBox("赤:0、青:1、 黄:2、緑:3、紫:4", "「磯野波平」氏にどのメンバーカラーを割り当てますか?")

'メッセージボックスに、「磯野波平氏」のメンバーカラーは「メンバーカラー(番号)ですと出力する
     MsgBox ("磯野波平氏のメンバーカラーは" & "「" & メンバーカラー(番号) & "」です☆★")

End Sub


皆様お気付きの通り、サザエさん一家に大事なキャラクターの「タマ」がいません!
そこで先ほどの配列「サザエさん一家」を自動で範囲の拡張をさせます。

新たに、配列「サザエ一家」に「タマ」も追加したい時、配列に自動的に追加出来るようなコードを書いて行きます。

行の「上端」と、「下端」と、「配列の最後(この場合は[7])」を、このExcelの全ての行を使って用意します。

このExcelの表を下にず〜〜〜〜とスクロールして、スクロールして、更に下に行くと、とてつもなく大きい数の行数があります。

数えきれないので、下記のVBAのコードでは
このExcelの全ての行数 = ActiveSheet.Rows.Count
と掲載します。

一番下である「このExcelの全ての行数」から上に向かって最初にぶつかるのが、
「タマ」の行です。
ここでは10行目で、変数「下端」に代入します。

変数「上端」は、B1から最初にぶつかるのが、「サザエ一家」という見出しで2行目です。

一家の行数は全部で8行で、配列は0から始まって7で終わります。
10行目から見出しの2行目を引いた数が行数として8行と求まります。
配列の最後の添え字は7なので、そこから1を引いています。


下記のコードで、LBoundは配列「サザエ一家」の一番小さい番号で[0]、
UBoundは一番大きい番号で[7]です。

Sub 配列3()

'文字列型の配列「サザエ一家」、ループの添え字数値型「i」、Long型の「上端」、Long型の「下端」、Long型の「配列の要素数」、Long型の「このExcelの全ての行数」を宣言

    Dim サザエ一家() As String, i As Long, 上端 As Long, _
       下端 As Long, 配列の要素数 As Long, このExcelの全ての行数 As Long

'ワークシート「国民的アニメ」をアクティブにする
       Worksheets("国民的アニメ").Activate

'このExcelの全ての行数をActiveSheet.Rows.Countを使って求める
      このExcelの全ての行数 = ActiveSheet.Rows.Count

'「上端」をセルB1、1行目2列目から下に向かって求める
      上端 = Cells(1, 2).End(xlDown).Row

'「下端」を行が「このExcelの全ての行数」で、列がB列(2列目)から上に上がって求める
      下端 = Cells(このExcelの全ての行数, 2).End(xlUp).Row

'「配列の要素数」の[7]を下端(10)-上端(2)-1から求める
      配列の要素数 = 下端 - 上端 - 1

'ReDimを使って、新たに配列を出力
       ReDim サザエ一家(配列の要素数)

'Forループで配列の最初(LBound)から配列の最後(UBound)までを添え字iに代入
          For i = LBound(サザエ一家) To UBound(サザエ一家)

      '配列「サザエ一家」に、Excelのシート「国民的アニメ」のセルB3からB7までを格納
             サザエ一家(i) = Worksheets("国民的アニメ").Cells(上端 + i + 1, 2).Value

'デバックプリントを使って、イミディエイトウィンドウに配列サザエ一家[i]を出力
          Debug.Print サザエ一家(i)

'ループを進める
         Next i

End Sub

実行すると、無事に自動で「タマ」も出力されました。

お疲れ様でした。

ここでサザエさんTipsですが、サザエさんは「あわび女子学園大学」を卒業されています。
参考記事:サザエさんの登場人物の学歴がヤバい…卒業した大学や就職先を公開

サザエさんのBGMが聴きたい方は、こちらの動画がオススメです。
この記事を書き終わって、私も思わず聴きに行きました。

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

いたばし花火大会2023の「にこちゃんマーク」の花火です。
「♪はだしで かけてく、陽気なサザエさん」 に合いそうな写真だと、個人的に思います。

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

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

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

写真素材素材【写真AC】

 

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

自己紹介


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

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


MOSなどの資格試験対策

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などの資格試験対策