乱数表(抽選表)を人数に合わせて作る-エクセルVBA抽選ソフト作成1

extyusenranhyoeyecatch

エクセルVBA抽選ソフトの作り方を紹介していきます。
初回の今回は、参加者を乱数表に落とし込むところまでです。
後々に、この乱数表(抽選表)を使って当選番号が決まっていきます。

こんにちは、じゅんぱ店長(@junpa33)です。

 

今回から、エクセルVBA抽選ソフトの作り方を紹介していきます。

初回となる今回は、抽選のためのベースとなる「抽選表」の作成です。

抽選参加人数に合わせてフレキシブルに表示させることが必要になります。

 

前の記事「無料DL エクセルVBA 抽選ソフト!【重複なし対応】ダウンロードと使い方」を読み直す

tyusentorisetueyecatch無料DL エクセルVBA 抽選ソフト!【重複なし対応】ダウンロードと使い方

 

tyusentorisetueyecatch
イベント企画などでの抽選作業を、エクセルVBAを利用して簡単に進めて行きます。 無料でダウンロードできるエクセルVBA抽選ソフト【重複なし】です。 少人数参加から大人数まで対応します。記事内に説明書きあります。 こんにちは、じゅんぱ店長(@ ...
続きを読む
extyusenranhyoeyecatch
エクセルVBA抽選ソフトの作り方を紹介していきます。 初回の今回は、参加者を乱数表に落とし込むところまでです。 後々に、この乱数表(抽選表)を使って当選番号が決まっていきます。 こんにちは、じゅんぱ店長(@junpa33)です。 今回から、 ...
続きを読む
tyusenjikkoueyecatch
エクセルVBA抽選ソフトの作成方法説明の2回目です。 今回はエクセルVBA抽選の実行コードを組み立て方を解説します。 抽選方法にバリエーションを設定していますので、抽選のイベント性がより高くなります。 こんにちは、じゅんぱ店長(@junpa ...
続きを読む
tyusenuformeyecatch
抽選作業を操作するためのユーザーフォーム作成を説明します。 今回はエクセルVBA抽選ソフト作成の3回目になります。 設置コントロールは多いですが、同じパターンで設置できます。 入力ミスに注意しましょう。 こんにちは、じゅんぱ店長(@junp ...
続きを読む
tyusencomopteyecatch
コマンドボタンで起動するコード(プロシージャー)を作ります。 今回はエクセルVBA抽選ソフト作成4になります。 単一的に実行させるのではなく、オプションボタンで指定したスタイルで実行の動作を可変させています。 こんにちは、じゅんぱ店長(@j ...
続きを読む
tyusenbackupeyecatch
ユーザーフォームに項目記入しても、一旦非表示にしてしまうと、 再表示時には、入力した項目がすべてクリアされていることにショックを感じます。 バックアップ対策で表示復旧を簡単に行えるようにします。 こんにちは、じゅんぱ店長(@junpa33) ...
続きを読む

 

 

抽選に乱数表(抽選表)を利用する効果

 

エクセルを使って抽選をしようとしたときに、みなさんは、たぶん乱数表までは使っていないと思います。

このソフトで乱数表(抽選表)を使うことで、大きく3点の効果を見込みました。

  1.  抽選途中のプロセスを他の人(参加者)に見せることが出来る。
  2.  複数回、乱数を発生させることで無作為性と公平性を担保することが出来る。
  3. 一つの抽選会で、簡単に、内容の違う複数の賞を個別に設定できる。

 

 抽選途中のプロセスを他の人(参加者)に見せる

 

多くの場合、そうだと思いますが、エクセルのRnd関数で抽選プログラムを作っていくときには、

「一つの列で1行目から順に乱数を発生させて、参加人数分の乱数値を取得する。」ということになると思います。

その方法では直ぐに、モニタ画面から乱数の発生行が見えなくなって、画面スクロールしないと進行結果がどうかさえも分からなくなります。

あるいは、当選結果だけを一覧表を使って画面表示するパターン(プロセスは抜きです)という方法もあるかと思います。

 

抽選作業をしているとは言っても、横から見ている応募者・参加者の人がいれば、何がどうなったのか、結論だけあっという間で、

「楽しむ隙間」もないでしょう。その人は結果にキョトンとしているだけではないでしょうか。

 

参加者(応募者)にとっての抽選の楽しみは「当選までのプロセス」です。

そこで、この抽選プロセスを見える化させるための、一つの解決策が「乱数表(抽選表)の利用」ということになりました。

全く完全密室の事務作業で進める抽選ではなく、

開催側でも「参加者には少しでも楽しんでほしいと企画した」抽選であれば、

そして、さらにお金と時間をかけて行う抽選であれば、パソコン抽選であっても

抽選にイベント的なおもしろ味は必要だと思います。

お金を払って、市販の有料アプリを使えばよいのでしょうが、

そこはそこ、予算面と手作り感も欲しい時が多くあると思います。

 

複数回、乱数を発生させることで無作為性と公平性を担保

 

イメージとして、一般的にコンピュータによる抽選は、手で行うものより公平という感覚はあります。

でも、一瞬で当たりはずれが決まれば、やっぱり「え?ほんと」という気持ちになってしまいます。

この「一瞬」で判明するのが、変な懐疑心を参加者に生み出す要因にもなります。

いい意味で、抽選には、参加者に期待させる「もったいぶる時間」が必要だということです。

この「もったいぶる時間」を作る方法として、その時間に複数回乱数を発生させることで抽選を行い、

同時に無作為性と公平性を担保していくという方法をとっています。

 

複数の賞を個別に設定

 

一つの抽選イベントで、内容の違う複数の賞を設定できて、

同時進行で抽選作業を実行することが出来ます。

単に参加人数分の乱数を一度に発生させ当選を決める方法では、すべての当選を一度に決めてしまうことが必要になります。

乱数を発生させる度に、前回発生の結果が上書きされてしまいます。複数回抽選するには、前回結果を保存していく作業が必要です。

エクセル関数式を使っている場合は特に注意が必要です。

エクセルVBAと乱数表を利用することによって、データの上書きを心配することなく、次の抽選を実行することが出来るようになります。

ビジュアル的にも、別セルに結果の書き出しと、乱数表(抽選表)上にそれまでの抽選結果を表示保存することが出来ます。

 

乱数表(抽選表)作成のためのエクセルVBAコード

 

今回、乱数表を作成するVBAコードは「Module1」に記述します。

「Module1」に記述する全コードは、このような内容になります。

その内、乱数表(抽選表)作成に関係するコードは①から➄になります。

  1. プロジェクト内とモジュール内で利用する変数の宣言
  2. 乱数表作成するシートの初期化(クリア)
  3. シート全体をデフォルト(リセット)する
  4. 応募者数に応じた方眼紙の設定(乱数をはめ込むベース)
  5. 応募者IDを、それに対応した乱数を使って方眼紙に配置する
  6. ユーザーフォームに抽選名称を復旧させるコード
  7. ユーザーフォームに抽選項目を復旧させるコード

 

①プロジェクト内とモジュール内で利用する変数の宣言

 

代入された変数値をプロシージャー間で使い回す用の変数を宣言しています。

コード

Option Explicit
Public Ar As Long
Public TYsheet, TOsheet, BUsheet As Worksheet
Public Title, EVD As String
Public Par As Long
Dim Ama As Long

 

宣言変数

  • Ar・・・・ 方眼紙の行数
  • TYsheet、TOsheet、BUsheet・ 「抽選会場」「当選者」「抽選項目BU」の各シート
  • Title、EVD・・・・ 「抽選名称」「抽選日時」
  • Par・・・・ 「抽選参加人数」
  • Ama・・・・ 「参加人数の計算加工上の余り」

 

MEMO

変数宣言の方法についてはこちらを参考にしてください。

vbasengeneyecatchエクセルVBA 変数の適用範囲を宣言方法でコントロールする

 

②乱数表(抽選表)作成するシートの初期化(クリア)

 

乱数表(抽選表)作成前に作成する場所「抽選会場」シートをクリアしておきます。

コード

Sub クリアG()

    Set TYsheet = Worksheets("抽選会場")
        With TYsheet
            .Cells.Clear
            .Cells.UseStandardHeight = True
            .Cells.UseStandardWidth = True
        End With
    Range("A1").Select

End Sub
MEMO

シートのクリアのためのエクセルVBAコードの作り方については、この記事が参考になります。

vbacleareyecatchエクセルVBA シートのクリアーを目的のメソッド別に最速理解

 

③シート全体をデフォルト(リセット)する

 

何かの用件で、ソフトをはじめて使う時の状態に戻す場合のVBAコードです。

全てのシートを初期化します。

コード

Sub クリアS()
    Dim i As Long
        For i = 1 To Worksheets.Count
        
                With Worksheets(i)
                    .Cells.Clear
                    .Cells.UseStandardHeight = True
                    .Cells.UseStandardWidth = True
                End With
                
            Range("A1").Select
        Next i
        Worksheets(1).Range("A1").Select
End Sub
MEMO

For ~ Next を使ってすべてのシートをクリアします。

For ~ Next の関連記事はこちらが参考になります。

fornextirekoeyecatchエクセルVBA!For~Nextの入れ子ループを最速に理解する vbadoloopeyecatchVBA 回数不定のループ処理はDo LoopとFor Each

 

④応募者数に応じた方眼紙の設定(乱数をはめ込むベース)

 

宣言変数

  • SQRoot・・・・ 参加人数に応じた平方根
  • Culc・・・・ 参加人数と近似平方値との差数
  • Syo・・・・ Culcから計算した行の追加数
  • n・・・・ 参加人数に合わせたセルサイズを指定する

 

コード設計のポイント

例えば参加人数47人の場合は、

47 = 6 ^ 2 + 11 になります。それぞれの変数には

 

Par = 47

 

SQRoot = Fix(Sqr(Par)) なので
SQRoot = 6

 

Culc = Par – SQRoot ^ 2 なので
Culc = 11

 

Syo = Culc \ SQRoot なので
Syo = 1

 

Ama = Culc Mod SQRoot なので
Ama = 5

 

が代入されます。

 

参加人数によって方眼紙サイズを変更します。

変数nをセルサイズを変更する係数として、参加人数に応じて変化させます。

方眼紙部分のセルについてベースの色を設定します。

 

tyusenranhyou001a

 

コード

Sub 応募者方眼紙()

    Dim SQRoot As Double  '参加人数の近似数の平方根
    Dim Culc As Long      '参加人数-平方近似数の余り
    Dim Syo As Long       '余りの行数
    Dim n As Double       '参加人数でセルサイズを変えるための変数
    
        Set TYsheet = Worksheets("抽選会場")
        TYsheet.Select
    '参加人数が記入されているかを確認
        If 選定ナビ.参加人数.Value = "" Then
            MsgBox "参加人数が入力されていません。" & vbCrLf & _
                "半角数字を入力してください。", vbOKOnly, "メッセージ"
            Exit Sub
        End If
        
    '方眼紙の行数を計算
        Par = 選定ナビ.参加人数.Value
        SQRoot = Fix(Sqr(Par))
                
        Culc = Par - SQRoot ^ 2
        Syo = Culc \ SQRoot
        Ama = Culc Mod SQRoot

    '項目の表示設定
        With Range("A1")
            .Value = "【当選者選定プログラム】"
            .Font.Size = 21
            .Font.Bold = True
            .Font.ColorIndex = 32
        End With
    
        Title = 選定ナビ.抽選名称.Value
        EVD = 選定ナビ.開催日付.Value
        With Range("A3")
            .Value = Title & "-" & EVD
            .Font.Size = 18
            .Font.Bold = True
            .Font.ColorIndex = 1
        End With
        
        With Range("J3")
            .Value = "参加人数は、" & Par & " 人です。"
            .Font.Bold = True
            .Font.Size = 15
            .Font.ColorIndex = 18
        End With
        
    '行数を修正する
        Select Case Syo
        Case Is > 1
            Ar = SQRoot + Syo
        Case Is = 1
            Ar = SQRoot + 1
        Case Is > 0
            Ar = SQRoot + 1
        Case Is = 0
            Ar = SQRoot
        Case Else
            Ar = SQRoot
        End Select
        
        If Ama > 0 Then Ar = Ar + 1
        
        Range(Cells(4, 4), Cells(4 + Ar - 1, 4 + SQRoot - 1)).Select
        Selection.Font.Size = Application.StandardFontSize
    '参加人数によって表示のフォントサイズを変更する
        Select Case Par
            Case Is < 625
                n = 1
                Selection.Font.Size = 9
            Case Is < 3001
                n = 1
                Selection.Font.Size = 8
            Case Is < 6001
                n = 0.8
                Selection.Font.Size = 7
            Case Is < 10000
                n = 0.8
                Selection.Font.Size = 7
            Case Is < 100000
                n = 0.8
                Selection.Font.Size = 5
            Case Else
                n = 0.6
                Selection.Font.Size = 4
        End Select
    'セルサイズを変更する
        With Selection
            .RowHeight = 22.5 * n
            .ColumnWidth = 3.13 * n
            .Interior.ColorIndex = 34
        End With
        
        Cells.RowHeight = 22.5 * n
        Range("1:3").RowHeight = 22.5
        
        With Range("B2")
            .Value = "全" & Ar & "行"
            .Font.Bold = True
            .Font.Size = 15
        End With
        
        Range("A2").Select
End Sub

 

MEMO

整数値を取り出す関数FIXについてはこの記事を参考にしてください。

vbaintfixeyecatchエクセルVBA 関数 Int・Fix・Abs・Signで数値の整数部分を完全に分離する

平方根を求める関数Sqr

select Case ~ End Select ステートメントについてはこの記事を参考にしてください。

vbaselectcaseeyecatchエクセルVBA Select Case 条件分岐 ステートメントの使い方の基本

With~End Withの使い方については、この記事を参考にしてください。

vbawithstateeyecatchWith~End Withの使い方。VBAコードを簡潔に記述する

メッセージボックスについてはこの記事を参考にできます。

vbamsgboxeyecatchメッセージボックス MsgBox実際の使い方を最速に理解

 

⑤応募者IDを、それに対応した乱数を使って方眼紙に配置する

 

宣言変数

  • i、j・・・・ カウンター変数
  • Tc・・・・ 乱数表上のセル位置を指定する(列)
  • Tr・・・・ 乱数表上のセル位置を指定する(行)

コード設計のポイント

抽選参加者に付与されているID番号を、それぞれに取得した乱数を使って方眼紙(乱数表)に配置していきます。

 

それぞれ取得した乱数の並び替えは、Sortメソッドで行うのが高速です。

 

方眼紙への配置は、ソート順に左上のセルから行方向下へ順に配置していきます。

 

tyusenranhyou002a

 

コード

Sub 応募者配置乱数()

    Dim i, j As Long  'カウンター変数
    Dim Tc As Long    'セル位置(列)
    Dim Tr As Long    'セル位置(行)
    
        TYsheet.Select
    '乱数発生のパターン化排除
        Randomize
    '乱数を発生させる
        For i = 1 To Par
            Cells(i + 3, 1) = i
            Cells(i + 3, 2) = Rnd
        Next i
        
    '参加者人数分の発生させた乱数を昇順でソートする
        Range("A4:B" & 3 + Par).Sort key1:=Range("B4"), order1:=xlAscending
        
    'ソートした順位から乱数表への表示セル位置を決める
        For i = 1 To Par
            Cells(i + 3, 3) = i
            Tc = i \ Ar
            Tr = i Mod Ar
            
            If Tr > 0 Then
                Tc = Tc + 1
            ElseIf Tr = 0 Then
                Tr = Ar
            End If
            
            Cells(Tr + 3, Tc + 3) = Cells(i + 3, 1)
        Next i
        
        If Ama <> 0 Then
            Range(Cells(Tr + 3 + 1, Tc + 3), Cells(Ar + 3, Tc + 3)).Select
            Selection.Interior.ColorIndex = 0
            Range("A1").Select
        Else
        End If
        
        Range(Cells(12, 1), Cells(Par + 11, 3)).Clear
        
    '項目の表示
        Range("A4") = "賞名"
        Range("B4") = "当選者数"
        Range("C4") = "未決数"
        
        For j = 1 To 6
            Range("A" & 4 + j) = PrN(j)
            Range("C" & 4 + j) = val(StrConv(PrQ(j), vbNarrow))
        Next j
        
        Range("A11") = "賞名"
        Range("B11") = "当選順位"
        Range("C11") = "当選者ID"
        
        With Range("A4:C11")
            .Font.Bold = True
            .Font.Size = 13
            .ColumnWidth = 11
        End With
        
        With Range("A4:C4")
            .Interior.ColorIndex = 28
        End With
        
        With Range("A11:C11")
            .Interior.ColorIndex = 28
        End With
            
        Range("A2").Select
            
        For i = 5 To 10
            Cells(i, 2) = 0
        Next i
        
        Columns("A").ColumnWidth = 20
        
        TYsheet.Select

End Sub

 

MEMO

Rnd関数の使い方についてはこちらを参考にしてください。

vbarndeyecatchエクセルVBA Rnd関数で乱数を取得。簡単な加工コードで発生値を変化させる

Sortメソッドの使い方

 

参加者数に合った抽選方眼を作る まとめ

 

tyusenranhyou003a

 

このエクセルVBA抽選ソフトの抽選のベースとなる乱数表(抽選表)を作成しました。

一つの抽選イベントについて、一つこの抽選表を作成することになります。

次には、この抽選表を使って、

抽選イベントの中のいくつかの〇〇賞の抽選を、抽選する賞の回数分この乱数表(抽選表)の上で行っていくことになります。

 

エクセルVBAを独学するために

エクセルVBAの独学のために参考となりそうな記事です。

何事も基礎の上に積みあがっていくものなので、基本は大切です。

エクセルVBAの独習を始めるためのポイントについて vbastudyeyecatchエクセルVBAを独学で習得するためのポイントは?良書との出会いは重要 基礎知識習得のためのオンライン学習講座の参考記事 Udemy1eyecatchエクセルVBA初級者がUdemyで動画学習する講座おすすめ5選と無料講座の上手な使い方。
  今回の記事はここまでです。
最後までご覧いただき有難うございました。

 

次の記事に進むにはこちら↓からになります。

tyusenjikkoueyecatchエクセルVBA抽選の実行コードを組み立てる-エクセルVBA抽選ソフト作成2

 

vbaintfixeyecatch
エクセルVBA関数で、数値の整数部分だけを分離します。 整数値取得のFix関数でなくInt関数の使用の場合でも、 他の関数との組み合わせで解決することが出来ます。 こんにちは、じゅんぱ店長(@junpa33)です。 今回のテーマは、数値の整 ...
続きを読む
vbarndeyecatch
エクセルVBAのRnd関数で乱数を取得します。 実用のためにはコードに簡単な加工をする必要があります。特に乱数値の整数化とRandomizeは必須です。 6.5兆通りのパスコードの生成方法も解説しています。 こんにちは、じゅんぱ店長(@ju ...
続きを読む
vbaroundupdowneyecatch
エクセルVBA 数値の切り上げ、切り捨てをするときには注意しなければいけません。 RoundUp関数とRoundDown関数を使う時に負の数が混在していると、そのままだと誤った計算結果になることがあります。 こんにちは、じゅんぱ店長(@ju ...
続きを読む
vbaroundeyecatch
エクセルVBAでも数値を四捨五入したい時は、Round関数を利用することが多いです。 Round関数の使い方はワークシートと同様ですが、ただ大きな注意点があります。 ここではその注意点も含めて使い方の説明を行います。 こんにちは、じゅんぱ店 ...
続きを読む
vbamaxminaveeyecatch
エクセルVBAで、ワークシート関数 Max・Min・Averageを利用して最大値・最小値・平均を求めます。 「簡単で短いエクセルVBAコード組み立て」を目指す上では、ワークシート関数は強い味方です。 こんにちは、じゅんぱ店長(@junpa ...
続きを読む
vbainsteeyecatch
InStr関数・InStrRev関数は、文字列操作系の関数の中でも最重要です。 この関数により指定の文字(列)の存在位置が取得できます。 そしてそれを目盛基準として、文字列操作をすることもできます。 こんにちは、じゅんぱ店長(@junpa3 ...
続きを読む
vbareplaceeyecatch
エクセルVBAで使える関数にReplace関数があります。 Replace関数は検索の文字列を指定の文字列に置換したり、削除したり出来ます。 利用価値の高い関数です。使い慣れておきましょう。 こんにちは、じゅんぱ店長(@junpa33)です ...
続きを読む
vbaselectcaseeyecatch
エクセルVBAで、必須の条件文。 その中の一つで、Select Case 条件分岐 ステートメントの使い方を説明します。 簡単なコード、可読性の向上が特徴のステートメントです。是非、知っておきましょう。 こんにちは、じゅんぱ店長(@junp ...
続きを読む
VBAValeyecatch
エクセルVBAのVal関数の使い方についてです。 「値を文字列型から数値型へ変換する」という機能があります。 データ型が不一致の場合、プログラムエラーでコード停止が発生することが良くあります。 こんにちは、じゅんぱ店長(@junpa33)で ...
続きを読む
VBAStringeyecatch
エクセルVBA String関数の使い方についてです。 「文字を指定した数だけ並べることが出来る」という機能の関数です。 この関数を使えば簡潔なコード記述で実行することが出来ます。 こんにちは、じゅんぱ店長(@junpa33)です。 今回は ...
続きを読む
vbajoineyecatch
エクセルVBAでJoin関数の使い方について説明します。 文字列を接続する関数ですが、 配列変数で文字列を要素化した時にはこれを使います。 また「区切り文字」も自由に設定できます。 こんにちは、じゅんぱ店長(@junpa33)です。 今回は ...
続きを読む
vbamideyecstch
エクセルVBAで文字列操作は、コード作成の中でも重要な部分です。 Mid・Right・Left関数は、その操作の中で重要な働きをする関数です。 文字列を切り出すこの関数の基本部分を説明します。 こんにちは、じゅんぱ店長(@junpa33)で ...
続きを読む
vbatrimeyecatch
Trim・RTrim・LTrimは文字列の端にあるスペースを取り除きます。 ちょっとのことですが、取り込みデータにスペースが付いていることでのエラーは発見修正が結構厄介です。 注意が必要です。 こんにちは、じゅんぱ店長(@junpa33)で ...
続きを読む
vbastrcstreyecatch
エクセルVBAで、Str関数とCStr関数に使い方とその違いについて説明します。 戻り値にちょっとした違いがあります。 使い方の違いでその後のコードの進行に影響が出ることがあり、なおざりにはできません。 こんにちは、じゅんぱ店長(@junp ...
続きを読む
vbaleneyecatch
Len関数の使い方ついて説明します。 エクセルVBAでプログラミングを行う時に、テキストデータを加工処理するには必須の関数です。 非常に有用な関数ですので、是非使えるようになっておきましょう。 こんにちは、じゅんぱ店長(@junpa33)で ...
続きを読む
VBACheckBoxeyecatch
エクセルシートで使う場合の、2種類あるチェックボックスの設置と使い方の違いを解説します。 一見簡単そうですが、 単純でない使い方をしたい時は、設置方法と設定方法を工夫する必要があります。 こんにちは、じゅんぱ店長(@junpa33)です。 ...
続きを読む
VBAOptionbuttoneyecatch
エクセルで書類を作成する時、項目を選択できるようにするのがオプションボタンです。 これには2種類あり、使い方にかかわる違いもあります。 詳しいオプションボタン設置方法と使い方のコツを解説します。 こんにちは、じゅんぱ店長(@junpa33) ...
続きを読む
vbamojisousaeyecatch
エクセルVBAコードで、ファイルの保存時に名前を付けて保存について、その時の年月日を付けたい時の設定方法についてです。 保存されたファイルがたくさん増えて行く中で、ファイルの判別で年月日を付けている(付けたいと思っている)人も多いでしょう。 ...
続きを読む
vbajyufukueyecatch
今回は、同じ項目を一つにまとめるためのエクセルVBAコードを紹介します。 多数銘柄の商品を複数の店で扱っている場合、商品銘柄集計表を作るには、商品銘柄の種類だけをリストにしないといけません。 こんにちは、じゅんぱ店長(@junpa33)です ...
続きを読む
vbafolderdeleteeyecatch
今回は、不要なフォルダをサクッと削除するエクセルVBAコードを紹介します。 削除の仕方は2つあります。VBA自身の機能を使うことと、FSOの機能を使うことの2つです。 こんにちは、じゅんぱ店長(@junpa33)です。 エクセルVBAで、不 ...
続きを読む
vbadirkilleyecatch
今回は、フォルダに保存されている要らないファイルを削除するエクセルVBAコードを紹介します。 フォルダを開いて一つずつファイル名を確認して、ではなくて、コード実行一発でササッと完了します。 こんにちは、じゅんぱ店長(@junpa33)です。 ...
続きを読む
vbachdireyecatch
エクセルVBAのステートメントで「ChDir(チェインジディレクトリ)」というのがあります。 少々地味感のあるステートメントですが、この使い方のポイントを説明いたします。 こんにちは、じゅんぱ店長(@junpa33)です。 エクセルVBAの ...
続きを読む
vbafindeyecatch001
今回は、データの検索方法で、エクセルVBAでできるメソッドについてです。 「FindとFindNextメソッド」の使い方と最速理解のコードの組み立て方を説明したいと思います。 こんにちは、じゅんぱ店長(@junpa33)です。 エクセルの検 ...
続きを読む
今回も、エクセルVBAで利用できるワークシート関数についてがテーマです。 この記事では、データナンバーなどから、その必要な値や数値を抽出する「Vloolup関数」について使い方を説明します。 こんにちは、じゅんぱ店長(@junpa33)です ...
続きを読む
vbaindexeyecatch001
今回も、エクセルVBAで利用できるワークシート関数についてがテーマです。 この記事では、データリストから必要な値や数値を取り出してくる「Index関数」について使い方を説明します。 こんにちは、じゅんぱ店長(@junpa33)です。 エクセ ...
続きを読む
vbamatcheyecatch001
エクセルVBAで利用できる関数についてがテーマです。 今回は、データリストから必要な値や数値を取り出してくる「Match関数」について、使い方を説明します。 こんにちは、じゅんぱ店長(@junpa33)です。 エクセルVBAでよく使うワーク ...
続きを読む
vbahairetu3eyecatch
エクセルVBAで変数を利用するとき、二次元配列変数を知っていれば何かと便利なことがあります。 今回はそんな配列変数をより実際に近い例題で説明していきます。 こんにちは、じゅんぱ店長(@junpa33)です。 エクセルVBAのプログラムでは、 ...
続きを読む
vbahairetu2eyecatch
エクセルVBAで配列を利用する時、それに関わる関数やステートメントを利用すれば、 より簡潔にコードを作成することが出来ます。 こんにちは、じゅんぱ店長(@junpa33)です。 エクセルVBA 配列を扱うときに利用できる関数とステートメント ...
続きを読む
vbahairetueyecatch
エクセルVBAで変数を利用するとき、複数の同じ型で変数を設定したいときがあります。 そんな時、出番となるのが配列変数ということです。 こんにちは、じゅんぱ店長(@junpa33)です。 エクセルVBAの1次元配列変数の使い方を説明します。 ...
続きを読む
vbabuttoneyecatch
エクセルVBAのプログラムを実行するのに、ワークシート上に設置したボタンのクリックでワンポチっとで行いたい。 そんなボタンの簡単設置方法を紹介します。 こんにちは、じゅんぱ店長(@junpa33)です。 エクセルVBAで、シートにマクロ(プ ...
続きを読む
vbasumeyecatch
エクセルVBAで、羅列された数値の集計作業をパパッと熟していきたいときがありますよね。 それを簡単に行える方法としてSUM関数があります。今回はこのSUM関数の使い方についてです。 こんにちは、じゅんぱ店長(@junpa33)です。 エクセ ...
続きを読む
vbainputboxeyecatch
エクセルVBAのプログラムで、利用者からの入力データを取り込んでコードを実行していくことがあります。 その簡潔な方法としてInputBoxがあります。今回はこのInputBoxの使い方についてです。 こんにちは、じゅんぱ店長(@junpa3 ...
続きを読む
vbalastcelleyecatch
エクセルVBAのプログラム作成で、入力データをその都度蓄積していく場合など、 既にデータの入っている最終セルの位置を調べたいという時が多くあります。 こんにちは、じゅんぱ店長(@junpa33)です。 エクセルVBAのコード組み立てで、デー ...
続きを読む
vbawithstateeyecatch
エクセルVBAのコードの組み立てでは、視認性や可読性を上げるためにできるだけ記述を簡潔にしたいところです。 Withステートメントは、そういったコード記述を簡潔にする役割があります。 こんにちは、じゅんぱ店長(@junpa33)です。 エク ...
続きを読む
vbacleareyecatch
エクセルVBAでシートを再利用するために、一度内容すべてをクリアしたい時があります。 普通は、Clearメソッドを使ってクリア操作を行いますが・・・ こんにちは、じゅんぱ店長(@junpa33)です。 エクセルVBAを組み上げる中で、シート ...
続きを読む
vbaoffseteyecatch
エクセルVBAで、セルやセルの選択範囲を移動させるのにOffsetプロパティがあります。 今回の「VBA最速で理解」は、この便利な「Offsetプロパティ」の使い方について説明します。 こんにちは、じゅんぱ店長(@junpa33)です。 エ ...
続きを読む
vbanameeyecatch
エクセルVBAで、アクティブセル、アクティブシート、アクティブブックという「現在参照中の・・・」というオブジェクトがあります。 今回の「VBA最速で理解」は、この「ActiveWorkbook」「ActiveSheet」「ActiveCel ...
続きを読む
vbaselacteyecatch
エクセルVBAで、そのコードを実行する先のオブジェクトに、フォーカスするためのメソッドに、「Select」と「Activate」があります。 今回は、このよく似た「Select」と「Activate」について説明します。 こんにちは、じゅん ...
続きを読む
vbavbekidoeyecatch
エクセルVBAを始めようとしたときに一番最初に戸惑うのが、「どうしたらVBAコードを書く表示画面になるのか?」だと思います。 今回は、この「どうしたら、その画面になるんだろう?」についての方法を説明します。 こんにちは、じゅんぱ店長(@ju ...
続きを読む
vbamsgboxeyecatch
エクセルVBAでユーザーフォームを使わなくても、簡単なユーザーとのやり取りならメッセージボックスでも可能です。 今回は、この「ユーザーへのメッセージや選択肢を提示する」ユーザーフォームについての説明をします。 こんにちは、じゅんぱ店長(@j ...
続きを読む
vbadoloopeyecatch
以前の記事でも書いたように、エクセルを使った業務で、「ループの処理」コードは重要な実行処理部分です。 今回は、このもう一つの「ループの処理」である「実行回数が限定されないループ処理」を行うコードについて説明します。 こんにちは、じゅんぱ店長 ...
続きを読む
vbafoldereyecatch
エクセルを使った業務で、「作成したファイルの保存」は作業の最後に必ず必要な部分です。 今回は、この「作成したファイルの保存」を行うための重要部分。保存先フォルダをVBAで指定する方法を説明します。 こんにちは、じゅんぱ店長(@junpa33 ...
続きを読む
vbasengeneyecatch
エクセルVBAのコード組み立てで使う変数。「この変数を使いますよ!」というのが「変数の宣言」です。 今回は、この変数の宣言についてです。 こんにちは、じゅんぱ店長(@junpa33)です。 エクセルVBA のコード組立ての中で、変数の宣言は ...
続きを読む
vbaifjyokeneyecatch
エクセルVBAのコード組み立てで最も必要な、最もよく使うメソッドの1つで「If~Then~Else」があります。 今回はこの「If~Then~Else」メソッドについて設定条件の絞り方のポイントを説明します。 こんにちは、じゅんぱ店長(@j ...
続きを読む
VBACopyeyecatch
エクセルVBAのコード組み立てで、よく使うメソッドの1つで「Copy」メソッドがあります。 今回はこの「Copy」メソッドの使い方を説明します。 こんにちは、じゅんぱ店長(@junpa33)です。 エクセルVBAで、ワークシートのコピーをを ...
続きを読む
VBAGotoeyecatch001
エクセルVBAのコードで、Gotoステートメントは嫌われ系のグループにはいっています。 それでも、GotoがあるのでVBAコード組み立てがスムーズに、楽に、なる事も多いと言うのも事実です。 こんにちは、じゅんぱ店長(@junpa33)です。 ...
続きを読む
fornextirekoeyecatch
エクセルVBAのコード組み立てで、非常によく使うステートメントの一つにFor~Nextでのループ処理があります。 今回はこのFor~Nextステートメントの使い方を説明します。 こんにちは、じゅんぱ店長(@junpa33)です。 エクセルV ...
続きを読む

 

<記事内容についての告知>VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。

 

  エクセルVBAをはじめから学ぶための参考書 おすすめの一冊
Excelマクロ&VBA超入門 今すぐ使えるかんたんぜったいデキます!
エクセルVBAを初めて勉強するときに効く
vbastudy016a
vbastudy017a

「Excelマクロ&VBA超入門」をamazonで見てみる

(著者)井上香緒里
(出版社)技術評論社
(税込価格)1,738円(本体1,580円+税)
マクロとVBAについて学んでみたいけれど,いまひとつ自信がないという方のために,ひとつひとつの操作を丁寧に解説する1冊目の教科書です。
目次一覧
第1章 マクロ基本編―マクロの基本を学ぼう
第2章 マクロ作成編―記録マクロを作ろう
第3章 マクロ修正編―記録マクロを修正しよう
第4章 ボタン作成編―マクロをボタンに登録しよう
第5章 マクロ応用編―シートをコピーするマクロを作ろう
第6章 VBA実践編―VBAでプログラムを書いてみよう
第7章 フォーム作成編―フォームを作ってみよう
第8章 困った解決編―マクロ&VBAの困った!を解決しよう
タイトルにもありますようにエクセルVBA「超入門」の参考書です。
エクセルVBAの「い・ろ・は の い」から説明していますので、安心して取り組める参考書です。
一つ一つの基本の操作を分かり易く解説しています。”ムチャクチャわかるレベル”の入門書ですので、読破時間が非常に短くなると思います。
反復学習して行く内に、段々読み返すのがばかばかしくなりますが、それはエクセルVBAの「い・ろ・は の い」は理解できたという証拠でもあります。
例題として、
  • 「データ消去」「シートのコピー」「メッセージボックス」の機能を持つお小遣い帳
  • 「入力フォーム」の機能を持った歩数表
2つの題材ファイルを作成しながら,マクロとVBAの基本を学習していきます。