Vba-quick-guide
VBA-概要
VBAは* V isual B asic for A * pplicationsの略で、MSExcel、MS-Word、MS-などのMicrosoft Officeアプリケーションで現在主に使用されているMicrosoftのイベント駆動型プログラミング言語アクセス。
技術者がカスタマイズされたアプリケーションとソリューションを構築して、それらのアプリケーションの機能を強化するのに役立ちます。 この機能の利点は、PCにVisual Basicをインストールする必要がないことですが、Officeをインストールすると、目的を達成するのに暗黙的に役立ちます。
VBAは、MS-Office 97からMS-Office 2013まで、また利用可能な最新バージョンのすべてで、すべてのオフィスバージョンで使用できます。 VBAの中で、Excel VBAが最も人気があります。 VBAを使用する利点は、線形プログラミングを使用してMS Excelで非常に強力なツールを構築できることです。
VBAの適用
MS-Excel自体が多くの組み込み関数を提供するため、なぜExcelでVBAを使用するのか疑問に思うかもしれません。 MS-Excelは、複雑な計算を実行するには不十分な基本的な組み込み関数のみを提供します。 このような状況では、VBAが最も明白なソリューションになります。
たとえば、Excelの組み込み式を使用してローンの毎月の返済を計算することは非常に困難です。 むしろ、そのような計算のためにVBAをプログラムするのは簡単です。
VBAエディターへのアクセス
Excelウィンドウで、「ALT+ F11」を押します。 次のスクリーンショットに示すように、VBAウィンドウが開きます。
VBA-Excelマクロ
この章では、ステップごとに簡単なマクロを作成する方法を学びます。
- ステップ1 *-まず、Excel 20XXで[開発者]メニューを有効にします。 同じことを行うには、ファイル→オプションをクリックします。
- ステップ2 *-[リボンのカスタマイズ]タブをクリックし、[開発者]をオンにします。 「OK」をクリックします。
- ステップ3 *-メニューバーに「開発者」リボンが表示されます。
- ステップ4 *-[Visual Basic]ボタンをクリックして、VBAエディターを開きます。
- ステップ5 *-ボタンを追加してスクリプトを開始します。 [挿入]→[ボタンを選択]をクリックします。
- ステップ6 *-右クリックして「プロパティ」を選択します。
- ステップ7 *-次のスクリーンショットに示すように、名前とキャプションを編集します。
- ステップ8 *-ボタンをダブルクリックすると、次のスクリーンショットに示すように、サブプロシージャのアウトラインが表示されます。
- ステップ9 *-メッセージを追加するだけでコーディングを開始します。
Private Sub say_helloworld_Click()
MsgBox "Hi"
End Sub
- ステップ10 *-ボタンをクリックして、サブプロシージャを実行します。 サブプロシージャの出力は、次のスクリーンショットに示されています。 デザインモードがオンになっていることを確認してください。 オンになっていない場合は、クリックしてオンにします。
注-以降の章では、手順1から10で説明したように、単純なボタンを使用してデモンストレーションします。 したがって、この章を完全に理解することが重要です。
VBA-Excel用語
この章では、よく使用されるExcel VBAの用語について説明します。 これらの用語は以降のモジュールで使用されるため、これらの各用語を理解することが重要です。
モジュール
モジュールは、コードが記述される領域です。 これは新しいワークブックなので、モジュールはありません。
モジュールを挿入するには、挿入→モジュールに移動します。 モジュールが挿入されると、「module1」が作成されます。
モジュール内では、VBAコードを記述でき、コードはプロシージャ内に記述されます。 プロシージャ/サブプロシージャは、何をすべきかを指示する一連のVBAステートメントです。
手順
プロシージャは、全体として実行されるステートメントのグループであり、特定のタスクの実行方法をExcelに指示します。 実行されるタスクは、非常に単純なタスクでも非常に複雑なタスクでもかまいません。 ただし、複雑な手順を小さな手順に分割することをお勧めします。
プロシージャの主な2つのタイプは、SubとFunctionです。
関数
関数は、プログラム内のどこからでも呼び出すことができる再利用可能なコードのグループです。 これにより、同じコードを何度も書く必要がなくなります。 これは、プログラマーが大きなプログラムをいくつかの小さな管理可能な機能に分割するのに役立ちます。
組み込み関数とは別に、VBAではユーザー定義関数も記述でき、ステートメントは Function と End Function の間に記述されます。
サブ手順
サブプロシージャは関数と同様に機能します。 サブプロシージャは値を返しませんが、関数は値を返す場合と返さない場合があります。 サブプロシージャは、callキーワードなしで呼び出すことができます。 サブプロシージャは常に Sub および End Sub ステートメントで囲まれます。
VBA-マクロコメント
コメントは、プログラムロジックと、他のプログラマが将来同じコードでシームレスに作業できるユーザー情報を文書化するために使用されます。
これには、開発者、変更者、組み込みロジックなどの情報が含まれます。 コメントは実行中にインタプリタによって無視されます。
VBAのコメントは2つの方法で示されます。
- 単一引用符( ')で始まるステートメントはコメントとして扱われます。 以下はその一例です。
' This Script is invoked after successful login
' Written by : finddevguides
' Return Value : True/False
- キーワード「REM」で始まるステートメント。 以下はその一例です。
REM This Script is written to Validate the Entered Input
REM Modified by : Tutorials point/user2
VBA-メッセージボックス
- MsgBox関数*は、メッセージボックスを表示し、ユーザーがボタンをクリックするのを待ちます。その後、ユーザーがクリックしたボタンに基づいてアクションが実行されます。
構文
MsgBox(prompt[,buttons][,title][,helpfile,context])
パラメータ説明
- プロンプト-必須パラメーター。 ダイアログボックスにメッセージとして表示される文字列。 プロンプトの最大長は約1024文字です。 メッセージが1行を超える場合は、各行の間にキャリッジリターン文字(Chr(13))または改行文字(Chr(10))を使用して行を区切ることができます。
- ボタン-オプションのパラメータ。 表示するボタンのタイプ、使用するアイコンスタイル、デフォルトボタンのID、およびメッセージボックスのモダリティを指定する数値式。 空白のままにすると、ボタンのデフォルト値は0です。
- タイトル-オプションのパラメーター。 ダイアログボックスのタイトルバーに表示される文字列式。 タイトルを空白のままにすると、アプリケーション名がタイトルバーに配置されます。
- Helpfile -オプションのパラメーター。 ダイアログボックスの状況依存ヘルプを提供するために使用するヘルプファイルを識別する文字列式。
- コンテキスト-オプションのパラメータ。 ヘルプ作成者が適切なヘルプトピックに割り当てたヘルプコンテキスト番号を識別する数値式。 コンテキストが提供される場合、ヘルプファイルも提供する必要があります。
- ボタン*パラメータは、次の値のいずれかを取ることができます-
- 0 vbOKOnly-OKボタンのみを表示します。
- 1 vbOKCancel-[OK]ボタンと[キャンセル]ボタンを表示します。
- 2 vbAbortRetryIgnore-中止、再試行、および無視ボタンを表示します。
- 3 vbYesNoCancel-[はい]、[いいえ]、および[キャンセル]ボタンを表示します。
- 4 vbYesNo-[はい]および[いいえ]ボタンを表示します。
- 5 vbRetryCancel-[再試行]および[キャンセル]ボタンを表示します。
- 16 vbCritical-クリティカルメッセージアイコンを表示します。
- 32 vbQuestion-警告クエリアイコンを表示します。
- 48 vbExclamation-警告メッセージアイコンを表示します。
- 64 vbInformation-情報メッセージアイコンを表示します。
- 0 vbDefaultButton1-最初のボタンはデフォルトです。
- 256 vbDefaultButton2-2番目のボタンはデフォルトです。
- 512 vbDefaultButton3-3番目のボタンがデフォルトです。
- 768 vbDefaultButton4-4番目のボタンがデフォルトです。
- 0 vbApplicationModalアプリケーションモーダル-ユーザーがメッセージボックスに応答するまで、現在のアプリケーションは動作しません。
- 4096 vbSystemModalシステムモーダル-ユーザーがメッセージボックスに応答するまで、すべてのアプリケーションは動作しません。
上記の値は、論理的に4つのグループに分けられます。最初のグループ(0〜5)は、メッセージボックスに表示されるボタンを示します。 * 2番目のグループ*(16、32、48、64)は表示されるアイコンのスタイルを記述し、* 3番目のグループ*(0、256、512、768)はどのボタンがデフォルトでなければならないかを示し、 4番目はgroup (0、4096)は、メッセージボックスのモダリティを決定します。
戻り値
MsgBox関数は、ユーザーがメッセージボックスでクリックしたボタンを識別するために使用できる次の値のいずれかを返すことができます。
- 1-vbOK-[OK]がクリックされた
- 2-vbCancel-キャンセルがクリックされた
- 3-vbAbort-中止がクリックされた
- 4-vbRetry-再試行がクリックされた
- 5-vbIgnore-無視がクリックされた
- 6-vbはい-はいがクリックされました
- 7-vbNo-いいえがクリックされました
例
Function MessageBox_Demo()
'Message Box with just prompt message
MsgBox("Welcome")
'Message Box with title, yes no and cancel Butttons
int a = MsgBox("Do you like blue color?",3,"Choose options")
' Assume that you press No Button
msgbox ("The Value of a is " & a)
End Function
出力
- ステップ1 *-VBAウィンドウの[実行]ボタンをクリックするか、次のスクリーンショットに示すようにExcelワークシートから関数を呼び出すことにより、上記の関数を実行できます。
- ステップ2 *-メッセージ「Welcome」および「OK」ボタンを含むシンプルなメッセージボックスが表示されます
- ステップ3 *-[OK]をクリックすると、[yes、no、およびcancel]ボタンとともにメッセージが表示された別のダイアログボックスが表示されます。
- ステップ4 *-「いいえ」ボタンをクリックすると、そのボタンの値(7)が整数として保存され、次のスクリーンショットに示すようにユーザーにメッセージボックスとして表示されます。 この値を使用すると、ユーザーがどのボタンをクリックしたかを把握できます。
VBA-入力ボックス
- InputBox関数*は、ユーザーに値の入力を求めます。 値を入力した後、ユーザーが[OK]ボタンをクリックするか、キーボードのEnterキーを押すと、InputBox関数はテキストボックス内のテキストを返します。 ユーザーが[キャンセル]ボタンをクリックすると、関数は空の文字列( "")を返します。
構文
InputBox(prompt[,title][,default][,xpos][,ypos][,helpfile,context])
パラメータ説明
- プロンプト-必須パラメーター。 ダイアログボックスにメッセージとして表示される文字列。 プロンプトの最大長は約1024文字です。 メッセージが1行を超える場合は、各行の間にキャリッジリターン文字(Chr(13))または改行文字(Chr(10))を使用して行を区切ることができます。
- タイトル-オプションのパラメーター。 ダイアログボックスのタイトルバーに表示される文字列式。 タイトルを空白のままにすると、アプリケーション名がタイトルバーに配置されます。
- デフォルト-オプションのパラメーター。 ユーザーが表示したいテキストボックス内のデフォルトのテキスト。
- XPos -オプションのパラメーター。 X 軸の位置は、画面の左側から水平方向へのプロンプト距離を表します。 空白のままにすると、入力ボックスは水平方向の中央に配置されます。
- YPos -オプションのパラメーター。 Y 軸の位置は、画面の左側からの垂直方向のプロンプト距離を表します。 空白のままにすると、入力ボックスは垂直方向の中央に配置されます。
- Helpfile -オプションのパラメーター。 ダイアログボックスの状況依存ヘルプを提供するために使用されるヘルプファイルを識別する文字列式。
- context -オプションのパラメーター。 ヘルプ作成者が適切なヘルプトピックに割り当てたヘルプコンテキスト番号を識別する数値式。 コンテキストが提供される場合、ヘルプファイルも提供する必要があります。
例
2つの入力ボックス(1つは長さ用、もう1つは幅用)を使用して実行時にユーザーから値を取得して、長方形の面積を計算します。
Function findArea()
Dim Length As Double
Dim Width As Double
Length = InputBox("Enter Length ", "Enter a Number")
Width = InputBox("Enter Width", "Enter a Number")
findArea = Length * Width
End Function
出力
- ステップ1 *-同じことを実行するには、次のスクリーンショットに示すように、関数名を使用して呼び出し、Enterを押します。
- ステップ2 *-実行すると、最初の入力ボックス(長さ)が表示されます。 入力ボックスに値を入力します。
- ステップ3 *-最初の値を入力すると、2番目の入力ボックス(幅)が表示されます。
- ステップ4 *-2番目の数字を入力したら、[OK]ボタンをクリックします。 次のスクリーンショットに示すように、領域が表示されます。
VBA-変数
- 変数*は、スクリプトの実行中に変更できる値を保持するために使用される名前付きメモリの場所です。 以下は、変数に名前を付けるための基本的な規則です。
- 最初の文字として文字を使用する必要があります。
- 名前にスペース、ピリオド(。)、感嘆符(!)、または文字@、&、$、#を使用することはできません。
- 名前の長さは255文字を超えることはできません。
- Visual Basicの予約キーワードを変数名として使用することはできません。
構文
VBAでは、変数を使用する前に宣言する必要があります。
Dim <<variable_name>> As <<variable_type>>
データ型
多くのVBAデータ型があり、これらは2つの主要なカテゴリ、つまり数値データ型と非数値データ型に分類できます。
数値データ型
次の表に、数値データ型と値の許容範囲を示します。
Type | Range of Values |
---|---|
Byte | 0 to 255 |
Integer | -32,768 to 32,767 |
Long | -2,147,483,648 to 2,147,483,648 |
Single |
-3.402823E+38 to -1.401298E-45 for negative values 正の値の場合は1.401298E-45〜3.402823E + 38。 |
Double |
-1.79769313486232e+308 to -4.94065645841247E-324 for negative values 4.94065645841247E-324から1.79769313486232e + 308までの正の値。 |
Currency | -922,337,203,685,477.5808 to 922,337,203,685,477.5807 |
Decimal |
PLUS/- 79,228,162,514,264,337,593,543,950,335 if no decimal is use &plus;/-7.9228162514264337593543950335(小数点以下28桁)。 |
非数値データ型
次の表に、非数値データ型と値の許容範囲を示します。
Type | Range of Values |
---|---|
String (fixed length) | 1 to 65,400 characters |
String (variable length) | 0 to 2 billion characters |
Date | January 1, 100 to December 31, 9999 |
Boolean | True or False |
Object | Any embedded object |
Variant (numeric) | Any value as large as double |
Variant (text) | Same as variable-length string |
例
ボタンを作成し、「Variables_demo」という名前を付けて、変数の使用方法を示します。
Private Sub say_helloworld_Click()
Dim password As String
password = "Admin#1"
Dim num As Integer
num = 1234
Dim BirthDay As Date
BirthDay = DateValue("30/10/2020")
MsgBox "Passowrd is " & password & Chr(10) & "Value of num is " &
num & Chr(10) & "Value of Birthday is " & BirthDay
End Sub
出力
スクリプトを実行すると、出力は次のスクリーンショットのようになります。
VBA-定数
定数は、スクリプトの実行中に変更できない値を保持するために使用される名前付きメモリの場所です。 ユーザーが定数値を変更しようとすると、スクリプトの実行はエラーで終了します。 定数は、変数の宣言と同じ方法で宣言されます。
定数の命名規則は次のとおりです。
- 最初の文字として文字を使用する必要があります。
- 名前にスペース、ピリオド(。)、感嘆符(!)、または文字&commat;、&、&dollar;、#を使用することはできません。
- 名前の長さは255文字を超えることはできません。
- Visual Basicの予約キーワードを変数名として使用することはできません。
構文
VBAでは、宣言された定数に値を割り当てる必要があります。 定数の値を変更しようとすると、エラーがスローされます。
Const <<constant_name>> As <<constant_type>> = <<constant_value>>
例
定数を操作する方法を示すボタン「Constant_demo」を作成してみましょう。
Private Sub Constant_demo_Click()
Const MyInteger As Integer = 42
Const myDate As Date = #2/2/2020#
Const myDay As String = "Sunday"
MsgBox "Integer is " & MyInteger & Chr(10) & "myDate is "
& myDate & Chr(10) & "myDay is " & myDay
End Sub
出力
スクリプトを実行すると、次のスクリーンショットに示すように出力が表示されます。
VBA-オペレーター
演算子*は、単純な式-4&plus;を使用して定義できます。 5は9です。 ここで、4と5は*オペランド*と&plus;と呼ばれます。 *operator と呼ばれます。 VBAは次の種類の演算子をサポートしています-
- 算術演算子
- 比較演算子
- 論理(またはリレーショナル)演算子
- 連結演算子
算術演算子
次の算術演算子はVBAでサポートされています。
変数Aが5を保持し、変数Bが10を保持すると仮定します-
リンク:/vba/vba_arithmetic_operators [例を表示]
Operator | Description | Example |
---|---|---|
PLUS | Adds the two operands | A PLUS B will give 15 |
- | Subtracts the second operand from the first | A - B will give -5 |
AST | Multiplies both the operands | A AST B will give 50 |
/ | Divides the numerator by the denominator | B/A will give 2 |
% | Modulus operator and the remainder after an integer division | B % A will give 0 |
^ | Exponentiation operator | B ^ A will give 100000 |
比較演算子
VBAでサポートされている比較演算子は次のとおりです。
変数Aが10を保持し、変数Bが20を保持すると仮定します-
リンク:/vba/vba_comparison_operators [例を表示]
Operator | Description | Example |
---|---|---|
= | Checks if the value of the two operands are equal or not. If yes, then the condition is true. | (A = B) is False. |
<> | Checks if the value of the two operands are equal or not. If the values are not equal, then the condition is true. | (A <> B) is True. |
> | Checks if the value of the left operand is greater than the value of the right operand. If yes, then the condition is true. | (A > B) is False. |
< | Checks if the value of the left operand is less than the value of the right operand. If yes, then the condition is true. | (A < B) is True. |
>= | Checks if the value of the left operand is greater than or equal to the value of the right operand. If yes, then the condition is true. | (A >= B) is False. |
⇐ | Checks if the value of the left operand is less than or equal to the value of the right operand. If yes, then the condition is true. | (A ⇐ B) is True. |
論理演算子
次の論理演算子はVBAでサポートされています。
変数Aが10を保持し、変数Bが0を保持すると仮定します-
リンク:/vba/vba_logical_operators [例を表示]
Operator | Description | Example |
---|---|---|
AND | Called Logical AND operator. If both the conditions are True, then the Expression is true. | a<>0 AND b<>0 is False. |
OR | Called Logical OR Operator. If any of the two conditions are True, then the condition is true. | a<>0 OR b<>0 is true. |
NOT | Called Logical NOT Operator. Used to reverse the logical state of its operand. If a condition is true, then Logical NOT operator will make false. | NOT(a<>0 OR b<>0) is false. |
XOR | Called Logical Exclusion. It is the combination of NOT and OR Operator. If one, and only one, of the expressions evaluates to be True, the result is True. | (a<>0 XOR b<>0) is true. |
連結演算子
次の連結演算子はVBAでサポートされています。
変数Aが5を保持し、変数Bが10を保持すると仮定します-
link:/vba/vba_concatenation_operators [例を表示]
Operator | Description | Example |
---|---|---|
PLUS | Adds two Values as Variable. Values are Numeric | A PLUS B will give 15 |
& | Concatenates two Values | A & B will give 510 |
変数A = "Microsoft"と変数B = "VBScript"を仮定し、その後-
Operator | Description | Example |
---|---|---|
PLUS | Concatenates two Values | A PLUS B will give MicrosoftVBScript |
& | Concatenates two Values | A & B will give MicrosoftVBScript |
注-連結演算子は、数値と文字列の両方に使用できます。 変数が数値または文字列値を保持する場合、出力はコンテキストに依存します。
VBA-決定
意思決定により、プログラマはスクリプトまたはそのセクションの実行フローを制御できます。 実行は、1つ以上の条件ステートメントによって管理されます。
以下は、ほとんどのプログラミング言語で見られる典型的な意思決定構造の一般的な形式です。
VBAは、次の種類の意思決定ステートメントを提供します。 詳細を確認するには、次のリンクをクリックしてください。
Sr.No. | Statement & Description |
---|---|
1 |
|
2 |
|
3 |
ブール式で構成される1つ以上の ElseIf ステートメントが続き、その後にオプションの* elseステートメント*が続く if ステートメント。すべての条件が偽になると実行されます。 |
4 |
別の if または elseif ステートメント内の if または elseif ステートメント。 |
5 |
|
VBA-ループ
コードのブロックを数回実行する必要がある場合があります。 一般に、ステートメントは順番に実行されます。関数の最初のステートメントが最初に実行され、次に2番目のステートメントが実行されます。
プログラミング言語は、より複雑な実行パスを可能にするさまざまな制御構造を提供します。
ループステートメントを使用すると、ステートメントまたはステートメントのグループを複数回実行できます。 VBAのループステートメントの一般的な形式を次に示します。
VBAは、ループ要件を処理するために次の種類のループを提供します。 詳細を確認するには、次のリンクをクリックしてください。
Sr.No. | Loop Type & Description |
---|---|
1 |
一連のステートメントを複数回実行し、ループ変数を管理するコードを短縮します。 |
2 |
これは、グループに少なくとも1つの要素がある場合に実行され、グループ内の各要素に対して繰り返されます。 |
3 |
これは、ループ本体を実行する前に条件をテストします。 |
4 |
do..Whileステートメントは、条件がTrueである限り実行されます。つまり、条件がFalseになるまでループを繰り返す必要があります。 |
5 |
do..Untilステートメントは、条件がFalseである限り実行されます。つまり、条件がTrueになるまでループを繰り返す必要があります。 |
ループ制御ステートメント
ループ制御ステートメントは、通常のシーケンスから実行を変更します。 実行がスコープを離れると、ループ内の残りのステートメントはすべて実行されません。
VBAは次の制御ステートメントをサポートしています。 詳細を確認するには、次のリンクをクリックしてください。
S.No. | Control Statement & Description |
---|---|
1 |
|
2 |
|
VBA-文字列
文字列は文字のシーケンスであり、アルファベット、数字、特殊文字、またはそれらのすべてで構成できます。 変数は、二重引用符 ""で囲まれている場合、文字列と呼ばれます。
構文
variablename = "string"
例
str1 = "string" ' Only Alphabets
str2 = "132.45" ' Only Numbers
str3 = "!@#$;*" ' Only Special Characters
Str4 = "Asc23@#" ' Has all the above
文字列関数
開発者が文字列を非常に効果的に操作するのに役立つ、事前定義されたVBA文字列関数があります。 VBAでサポートされているStringメソッドは次のとおりです。 詳細を知るには、それぞれの方法をクリックしてください。
Sr.No. | Function Name & Description |
---|---|
1 |
指定された部分文字列の最初の出現を返します。 検索は左から右に行われます。 |
2 |
指定された部分文字列の最初の出現を返します。 検索は右から左に行われます。 |
3 |
指定された文字列の小文字を返します。 |
4 |
指定された文字列の大文字を返します。 |
5 |
文字列の左側から特定の文字数を返します。 |
6 |
文字列の右側から特定の文字数を返します。 |
7 |
指定されたパラメーターに基づいて、文字列から特定の文字数を返します。 |
8 |
指定された文字列の左側のスペースを削除した後、文字列を返します。 |
9 |
指定した文字列の右側のスペースを削除した後、文字列を返します。 |
10 |
先頭と末尾の両方の空白スペースを削除した後、文字列値を返します。 |
11 |
指定された文字列の長さを返します。 |
12 |
文字列を別の文字列に置き換えた後、文字列を返します。 |
13 |
指定された数のスペースで文字列を埋めます。 |
14 |
指定された2つの文字列を比較した後、整数値を返します。 |
15 |
指定された回数、指定された文字の文字列を返します。 |
16 |
指定された文字列の文字のシーケンスを逆にした後、文字列を返します。 |
VBA-日時関数
VBScriptの日付と時刻の関数は、開発者が日付と時刻をある形式から別の形式に変換したり、特定の条件に合った形式で日付または時刻の値を表現したりするのに役立ちます。
日付関数
Sr.No. | Function & Description |
---|---|
1 |
現在のシステム日付を返す関数。 |
2 |
指定された入力を日付に変換する関数。 |
3 |
指定された時間間隔が追加された日付を返す関数。 |
4 |
2つの期間の差を返す関数。 |
5 |
指定された入力日付値の指定された部分を返す関数。 |
6 |
指定された年、月、および日付の有効な日付を返す関数。 |
7 |
指定されたパラメーターに基づいて日付をフォーマットする関数。 |
8 |
提供されたパラメーターが日付であるかどうかにかかわらずブール値を返す関数。 |
9 |
指定された日付の日を表す1〜31の整数を返す関数。 |
10 |
指定された日付の月を表す1〜12の整数を返す関数。 |
11 |
指定された日付の年を表す整数を返す関数。 |
12 |
指定された日付の特定の月の名前を返す関数。 |
13 |
指定された日の曜日を表す整数(1〜7)を返す関数。 |
14 |
指定された日の曜日名を返す関数。 |
時間関数
Sr.No. | Function & Description |
---|---|
1 |
現在のシステムの日付と時刻を返す関数。 |
2 |
指定された時間の時間部分を表す0〜23の整数を返す関数。 |
3 |
指定された時間の分の部分を表す0〜59の整数を返す関数。 |
4 |
指定された時間の秒部分を表す0〜59の整数を返す関数。 |
5 |
現在のシステム時刻を返す関数。 |
6 |
午前12:00以降の秒数とミリ秒数を返す関数。 |
7 |
時間、分、秒の特定の入力の時間を返す関数。 |
8 |
入力文字列を時刻形式に変換する関数。 |
VBA-配列
変数は値を格納するコンテナであることをよく知っています。 開発者は、一度に1つの変数に複数の値を保持できる場合があります。 一連の値が単一の変数に格納される場合、それは*配列変数*と呼ばれます。
配列宣言
配列は、変数の宣言と同じ方法で宣言されますが、配列変数の宣言では括弧が使用されます。 次の例では、配列のサイズが括弧内に記載されています。
'Method 1 : Using Dim
Dim arr1() 'Without Size
'Method 2 : Mentioning the Size
Dim arr2(5) 'Declared with size of 5
'Method 3 : using 'Array' Parameter
Dim arr3
arr3 = Array("apple","Orange","Grapes")
- 配列サイズは5と示されていますが、配列インデックスがゼロから始まるため、6つの値を保持できます。
- 配列インデックスを負にすることはできません。
- VBScript配列は、任意のタイプの変数を配列に格納できます。 したがって、配列は、整数、文字列、または文字を単一の配列変数に格納できます。
配列への値の割り当て
割り当てられる値のそれぞれに対して配列インデックス値を指定することにより、値が配列に割り当てられます。 文字列にすることができます。
例
ボタンを追加し、次の関数を追加します。
Private Sub Constant_demo_Click()
Dim arr(5)
arr(0) = "1" 'Number as String
arr(1) = "VBScript" 'String
arr(2) = 100 'Number
arr(3) = 2.45 'Decimal Number
arr(4) = #10/07/2013# 'Date
arr(5) = #12.45 PM# 'Time
msgbox("Value stored in Array index 0 : " & arr(0))
msgbox("Value stored in Array index 1 : " & arr(1))
msgbox("Value stored in Array index 2 : " & arr(2))
msgbox("Value stored in Array index 3 : " & arr(3))
msgbox("Value stored in Array index 4 : " & arr(4))
msgbox("Value stored in Array index 5 : " & arr(5))
End Sub
上記の関数を実行すると、次の出力が生成されます。
Value stored in Array index 0 : 1
Value stored in Array index 1 : VBScript
Value stored in Array index 2 : 100
Value stored in Array index 3 : 2.45
Value stored in Array index 4 : 7/10/2013
Value stored in Array index 5 : 12:45:00 PM
多次元配列
配列は1つの次元に限定されているわけではありませんが、最大60の次元を持つことができます。 2次元配列は、最も一般的に使用されるものです。
例
次の例では、多次元配列が3行4列で宣言されています。
Private Sub Constant_demo_Click()
Dim arr(2,3) as Variant ' Which has 3 rows and 4 columns
arr(0,0) = "Apple"
arr(0,1) = "Orange"
arr(0,2) = "Grapes"
arr(0,3) = "pineapple"
arr(1,0) = "cucumber"
arr(1,1) = "beans"
arr(1,2) = "carrot"
arr(1,3) = "tomato"
arr(2,0) = "potato"
arr(2,1) = "sandwitch"
arr(2,2) = "coffee"
arr(2,3) = "nuts"
msgbox("Value in Array index 0,1 : " & arr(0,1))
msgbox("Value in Array index 2,2 : " & arr(2,2))
End Sub
上記の関数を実行すると、次の出力が生成されます。
Value stored in Array index : 0 , 1 : Orange
Value stored in Array index : 2 , 2 : coffee
ReDimステートメント
ReDimステートメントは、動的配列変数を宣言し、ストレージスペースを割り当てまたは再割り当てするために使用されます。
構文
ReDim [Preserve] varname(subscripts) [, varname(subscripts)]
パラメータ説明
- Preserve -最後の次元のサイズを変更するときに既存の配列のデータを保持するために使用されるオプションのパラメーター。
- Varname -変数の名前を示す必須パラメータ。標準の変数命名規則に従う必要があります。
- 下付き文字-配列のサイズを示す必須パラメータ。
例
次の例では、配列が再定義され、配列の既存のサイズが変更されたときに値が保持されます。
注-元よりも小さい配列のサイズを変更すると、削除された要素のデータは失われます。
Private Sub Constant_demo_Click()
Dim a() as variant
i = 0
redim a(5)
a(0) = "XYZ"
a(1) = 41.25
a(2) = 22
REDIM PRESERVE a(7)
For i = 3 to 7
a(i) = i
Next
'to Fetch the output
For i = 0 to ubound(a)
Msgbox a(i)
Next
End Sub
上記の関数を実行すると、次の出力が生成されます。
XYZ
41.25
22
3
4
5
6
7
配列メソッド
VBScriptには、開発者が配列を効果的に処理するのに役立つさまざまな組み込み関数があります。 配列と組み合わせて使用されるすべてのメソッドを以下にリストします。 メソッド名をクリックして詳細を確認してください。
Sr.No. | Function & Description |
---|---|
1 |
指定された配列の最小の添え字に対応する整数を返す関数。 |
2 |
指定された配列の最大の添え字に対応する整数を返す関数。 |
3 |
指定された数の値を含む配列を返す関数。 区切り文字に基づいて分割します。 |
4 |
配列内の指定された数の部分文字列を含む文字列を返す関数。 これは、Split Methodの正反対の機能です。 |
5 |
特定のフィルター条件に基づいた文字列配列のサブセットを含むゼロベースの配列を返す関数。 |
6 |
入力変数が配列かどうかを示すブール値を返す関数。 |
7 |
配列変数に割り当てられたメモリを回復する関数。 |
VBA-ユーザー定義関数
- 関数*は、プログラム内のどこからでも呼び出すことができる再利用可能なコードのグループです。 これにより、同じコードを何度も書く必要がなくなります。 これにより、プログラマは大きなプログラムをいくつかの小さくて管理可能な機能に分割できます。
組み込み関数とは別に、VBAではユーザー定義関数も作成できます。 この章では、VBAで独自の関数を作成する方法を学習します。
関数定義
VBA関数には、オプションのreturnステートメントを含めることができます。 これは、関数から値を返す場合に必要です。
たとえば、関数に2つの数値を渡すと、関数から呼び出し元プログラムで乗算を返すことが期待できます。
注-関数は、関数名自体に割り当てられた配列として、コンマで区切られた複数の値を返すことができます。
関数を使用する前に、その特定の関数を定義する必要があります。 VBAで関数を定義する最も一般的な方法は、 Function キーワードの後に一意の関数名を使用することです。これには、パラメーターのリストと End Function キーワードを含むステートメントが含まれる場合と含まれない場合があります。関数の。 基本的な構文は次のとおりです。
構文
ボタンを追加し、次の関数を追加します。
Function Functionname(parameter-list)
statement 1
statement 2
statement 3
.......
statement n
End Function
例
エリアを返す次の関数を追加します。 関数名自体で値を返すことができることに注意してください。
Function findArea(Length As Double, Optional Width As Variant)
If IsMissing(Width) Then
findArea = Length *Length
Else
findArea = Length* Width
End If
End Function
関数を呼び出す
関数を呼び出すには、次のスクリーンショットに示すように、関数名を使用して関数を呼び出します。
以下に示すエリアの出力がユーザーに表示されます。
VBA-サブ手順
- サブプロシージャ*は関数に似ていますが、いくつかの違いがあります。
- サブプロシージャは値を返しませんが、関数は値を返す場合と返さない場合があります。
- サブプロシージャは、callキーワードなしで呼び出すことができます。 *Subプロシージャは、常にSubおよびEnd Subステートメントで囲まれます。
例
Sub Area(x As Double, y As Double)
MsgBox x* y
End Sub
呼び出し手順
スクリプトのどこかでプロシージャを呼び出すには、関数から呼び出しを行うことができます。 サブプロシージャは値を返さないため、関数と同じ方法を使用することはできません。
Function findArea(Length As Double, Width As Variant)
area Length, Width ' To Calculate Area 'area' sub proc is called
End Function
これで、次のスクリーンショットに示すように、サブプロシージャではなく関数のみを呼び出すことができます。
面積が計算され、[メッセージ]ボックスにのみ表示されます。
関数から面積値が返されないため、結果セルにはZEROが表示されます。 つまり、Excelワークシートからサブプロシージャを直接呼び出すことはできません。
VBA-イベント
セルまたはセル値の範囲を手動で変更すると、イベント駆動型プログラミングであるVBAをトリガーできます。 変更イベントは物事を簡単にするかもしれませんが、書式設定でいっぱいのページを非常に迅速に終了できます。 イベントには2種類あります。
- ワークシートイベント
- ワークブックイベント
ワークシートイベント
ワークシートイベントは、ワークシートに変更があるとトリガーされます。 シートタブを右クリックして[コードの表示]を選択し、後でコードを貼り付けることで作成されます。
ユーザーはそれらのワークシートをそれぞれ選択し、ドロップダウンから「WorkSheet」を選択して、サポートされているすべてのワークシートイベントのリストを取得できます。
以下は、ユーザーが追加できる、サポートされているワークシートイベントです。
Private Sub Worksheet_Activate()
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Private Sub Worksheet_Calculate()
Private Sub Worksheet_Change(ByVal Target As Range)
Private Sub Worksheet_Deactivate()
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
例
ダブルクリックする前にメッセージを表示するだけです。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
MsgBox "Before Double Click"
End Sub
出力
セルをダブルクリックすると、次のスクリーンショットに示すように、ユーザーにメッセージボックスが表示されます。
ワークブックイベント
ワークブックイベントは、ワークブック全体に変更があるとトリガーされます。 次のスクリーンショットに示すように、「ThisWorkbook」を選択し、ドロップダウンから「workbook」を選択することで、ワークブックイベントのコードを追加できます。 次のスクリーンショットに示すように、Workbook_openサブプロシージャがすぐにユーザーに表示されます。
以下は、ユーザーが追加できる、サポートされているWorkbookイベントです。
Private Sub Workbook_AddinUninstall()
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Private Sub Workbook_Deactivate()
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Private Sub Workbook_Open()
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
Private Sub Workbook_WindowResize(ByVal Wn As Window)
例
新しいシートが作成されるたびに、新しいシートが正常に作成されるというメッセージをユーザーに表示するだけでよいとしましょう。
Private Sub Workbook_NewSheet(ByVal Sh As Object)
MsgBox "New Sheet Created Successfully"
End Sub
出力
新しいExcelシートを作成すると、次のスクリーンショットに示すようなメッセージがユーザーに表示されます。
VBA-エラー処理
プログラミングには、(a)構文エラー、(b)ランタイムエラー、(c)論理エラーの3種類のエラーがあります。
構文エラー
構文エラーは解析エラーとも呼ばれ、VBScriptの解釈時に発生します。 たとえば、次の行では閉じ括弧が欠落しているため、構文エラーが発生します。
Function ErrorHanlding_Demo()
dim x,y
x = "finddevguides"
y = Ucase(x
End Function
ランタイムエラー
ランタイムエラーは、例外とも呼ばれ、実行中に解釈後に発生します。
たとえば、次の行は実行時エラーを引き起こします。ここでは構文は正しいのですが、実行時にfnmultiplyを呼び出そうとしていますが、これは存在しない関数です。
Function ErrorHanlding_Demo1()
Dim x,y
x = 10
y = 20
z = fnadd(x,y)
a = fnmultiply(x,y)
End Function
Function fnadd(x,y)
fnadd = x + y
End Function
論理エラー
論理エラーは、追跡が最も難しいタイプのエラーです。 これらのエラーは、構文エラーまたは実行時エラーの結果ではありません。 代わりに、スクリプトを駆動するロジックを間違えたときに発生し、期待した結果が得られません。
これらのエラーをキャッチすることはできません。これは、ビジネス要件によってプログラムにどのタイプのロジックを配置するかによって異なるためです。
たとえば、数値をゼロで除算したり、無限ループに入るスクリプトを記述したりします。
エラーオブジェクト
実行時エラーがある場合、エラーメッセージを表示して実行を停止します。 開発者として、エラーをキャプチャする場合は、 Error オブジェクトが使用されます。
例
次の例では、 Err.Number はエラー番号を示し、 Err.Description はエラーの説明を示します。
Err.Raise 6 ' Raise an overflow error.
MsgBox "Error # " & CStr(Err.Number) & " " & Err.Description
Err.Clear ' Clear the error.
エラー処理
VBAはエラー処理ルーチンを有効にし、エラー処理ルーチンを無効にするためにも使用できます。 On Errorステートメントがないと、発生するランタイムエラーは致命的です。エラーメッセージが表示され、実行が突然停止します。
On Error { GoTo [ line | 0 | -1 ] | Resume Next }
Sr.No. | Keyword & Description |
---|---|
1 |
GoTo line 必要な行引数で指定された行から始まるエラー処理ルーチンを有効にします。 指定された行は、On Errorステートメントと同じ手順である必要があります。そうでない場合、コンパイル時エラーが発生します。 |
2 |
GoTo 0 現在のプロシージャで有効なエラーハンドラを無効にし、Nothingにリセットします。 |
3 |
GoTo -1 現在のプロシージャで有効な例外を無効にし、それをNothingにリセットします。 |
4 |
Resume Next 実行時エラーが発生すると、エラーが発生したステートメントの直後のステートメントに制御が移り、そのポイントから実行が継続することを指定します。 |
例
Public Sub OnErrorDemo()
On Error GoTo ErrorHandler ' Enable error-handling routine.
Dim x, y, z As Integer
x = 50
y = 0
z = x/y ' Divide by ZERO Error Raises
ErrorHandler: ' Error-handling routine.
Select Case Err.Number ' Evaluate error number.
Case 10 ' Divide by zero error
MsgBox ("You attempted to divide by zero!")
Case Else
MsgBox "UNKNOWN ERROR - Error# " & Err.Number & " : " & Err.Description
End Select
Resume Next
End Sub
VBA-Excelオブジェクト
VBAを使用してプログラミングする場合、ユーザーが扱う重要なオブジェクトはほとんどありません。
- アプリケーションオブジェクト
- ワークブックオブジェクト
- ワークシートオブジェクト
- 範囲オブジェクト
アプリケーションオブジェクト
アプリケーションオブジェクトは次で構成されています-
- アプリケーション全体の設定とオプション。
- ActiveCell、ActiveSheetなどのトップレベルオブジェクトを返すメソッド。
例
'Example 1 :
Set xlapp = CreateObject("Excel.Sheet")
xlapp.Application.Workbooks.Open "C:\test.xls"
'Example 2 :
Application.Windows("test.xls").Activate
'Example 3:
Application.ActiveCell.Font.Bold = True
ワークブックオブジェクト
WorkbookオブジェクトはWorkbooksコレクションのメンバーであり、Microsoft Excelで現在開いているすべてのWorkbookオブジェクトが含まれています。
例
'Ex 1 : To close Workbooks
Workbooks.Close
'Ex 2 : To Add an Empty Work Book
Workbooks.Add
'Ex 3: To Open a Workbook
Workbooks.Open FileName:="Test.xls", ReadOnly:=True
'Ex : 4 - To Activate WorkBooks
Workbooks("Test.xls").Worksheets("Sheet1").Activate
ワークシートオブジェクト
WorksheetオブジェクトはWorksheetsコレクションのメンバーであり、ワークブック内のすべてのWorksheetオブジェクトを含みます。
例
'Ex 1 : To make it Invisible
Worksheets(1).Visible = False
'Ex 2 : To protect an WorkSheet
Worksheets("Sheet1").Protect password:=strPassword, scenarios:=True
範囲オブジェクト
範囲オブジェクトは、セル、行、列、またはセルの1つ以上の連続ブロックを含むセルの選択を表します。
'Ex 1 : To Put a value in the cell A5
Worksheets("Sheet1").Range("A5").Value = "5235"
'Ex 2 : To put a value in range of Cells
Worksheets("Sheet1").Range("A1:A4").Value = 5
VBA-テキストファイル
VBAを使用して、Excelファイルを読み取り、セルの内容をテキストファイルに書き込むこともできます。 VBAは、ユーザーが2つの方法を使用してテキストファイルで作業することができます-
- ファイルシステムオブジェクト *書き込みコマンドを使用する
ファイルシステムオブジェクト(FSO)
名前が示すように、FSOは、開発者がドライブ、フォルダー、およびファイルを操作するのに役立ちます。 このセクションでは、FSOの使用方法について説明します。
Sr.No. | Object Type & Description |
---|---|
1 |
ドライブはオブジェクトです。 システムに接続されているドライブに関する情報を収集できるメソッドとプロパティが含まれています。 |
2 |
Drives ドライブはコレクションです。 物理的または論理的に、システムに接続されているドライブのリストを提供します。 |
3 |
File ファイルはオブジェクトです。 開発者がファイルを作成、削除、または移動できるようにするメソッドとプロパティが含まれています。 |
4 |
Files ファイルはコレクションです。 フォルダー内に含まれるすべてのファイルのリストを提供します。 |
5 |
Folder フォルダーはオブジェクトです。 開発者がフォルダを作成、削除、または移動できるようにするメソッドとプロパティを提供します。 |
6 |
Folders フォルダはコレクションです。 フォルダー内のすべてのフォルダーのリストを提供します。 |
7 |
TextStream TextStreamはオブジェクトです。 開発者がテキストファイルを読み書きできるようにします。 |
ドライブ
ドライブ*は、特定のディスクドライブまたはネットワーク共有のプロパティへのアクセスを提供するオブジェクトです。 次のプロパティは *Drive オブジェクトでサポートされています-
- 空きスペース
- ドライブレター
- ドライブタイプ
- ファイルシステム
- フリースペース
- IsReady
- Path
- ルートフォルダ
- シリアルナンバー
- ShareName
- 全体の大きさ
- VolumeName
例
- ステップ1 *-FSOを使用したスクリプト作成に進む前に、Microsoft Scripting Runtimeを有効にする必要があります。 同じことを行うには、次のスクリーンショットに示すように、ツール→参照に移動します。
- ステップ2 *-「Microsoft Scripting RunTime」を追加し、[OK]をクリックします。
- ステップ3 *-テキストファイルに書き込むデータを追加し、コマンドボタンを追加します。
- ステップ4 *-スクリプトの時間です。
Private Sub fn_write_to_text_Click()
Dim FilePath As String
Dim CellData As String
Dim LastCol As Long
Dim LastRow As Long
Dim fso As FileSystemObject
Set fso = New FileSystemObject
Dim stream As TextStream
LastCol = ActiveSheet.UsedRange.Columns.Count
LastRow = ActiveSheet.UsedRange.Rows.Count
' Create a TextStream.
Set stream = fso.OpenTextFile("D:\Try\Support.log", ForWriting, True)
CellData = ""
For i = 1 To LastRow
For j = 1 To LastCol
CellData = Trim(ActiveCell(i, j).Value)
stream.WriteLine "The Value at location (" & i & "," & j & ")" & CellData
Next j
Next i
stream.Close
MsgBox ("Job Done")
End Sub
出力
スクリプトを実行するときは、ワークシートの最初のセルにカーソルを置いてください。 Support.logファイルは、「D:\ Try」の下の次のスクリーンショットに示すように作成されます。
ファイルの内容は、次のスクリーンショットに示されています。
書き込みコマンド
FSOとは異なり、参照を追加する必要はありませんが、ドライブ、ファイル、フォルダーを操作することはできません。 ストリームをテキストファイルに追加するだけです。
例
Private Sub fn_write_to_text_Click()
Dim FilePath As String
Dim CellData As String
Dim LastCol As Long
Dim LastRow As Long
LastCol = ActiveSheet.UsedRange.Columns.Count
LastRow = ActiveSheet.UsedRange.Rows.Count
FilePath = "D:\Try\write.txt"
Open FilePath For Output As #2
CellData = ""
For i = 1 To LastRow
For j = 1 To LastCol
CellData = "The Value at location (" & i & "," & j & ")" & Trim(ActiveCell(i, j).Value)
Write #2, CellData
Next j
Next i
Close #2
MsgBox ("Job Done")
End Sub
出力
スクリプトを実行すると、次のスクリーンショットに示すように、場所「D:\ Try」に「write.txt」ファイルが作成されます。
ファイルの内容は、次のスクリーンショットに示されています。
VBA-プログラミングチャート
VBAを使用すると、特定の基準に基づいてグラフを生成できます。 例を使用して見てみましょう。
- ステップ1 *-グラフを生成するデータを入力します。
- ステップ2 *-3つのボタンを作成します。1つは棒グラフを生成し、もう1つは円グラフを生成し、もう1つは縦棒グラフを生成します。
- ステップ3 *-これらのタイプのチャートのそれぞれを生成するマクロを開発します。
' Procedure to Generate Pie Chart
Private Sub fn_generate_pie_graph_Click()
Dim cht As ChartObject
For Each cht In Worksheets(1).ChartObjects
cht.Chart.Type = xlPie
Next cht
End Sub
' Procedure to Generate Bar Graph
Private Sub fn_Generate_Bar_Graph_Click()
Dim cht As ChartObject
For Each cht In Worksheets(1).ChartObjects
cht.Chart.Type = xlBar
Next cht
End Sub
' Procedure to Generate Column Graph
Private Sub fn_generate_column_graph_Click()
Dim cht As ChartObject
For Each cht In Worksheets(1).ChartObjects
cht.Chart.Type = xlColumn
Next cht
End Sub
- ステップ4 *-対応するボタンをクリックすると、チャートが作成されます。 次の出力で、[円グラフの生成]ボタンをクリックします。
VBA-ユーザーフォーム
- ユーザーフォーム*は、ユーザーデータ入力をより制御しやすく、ユーザーにとって使いやすいカスタムビルトダイアログボックスです。 この章では、単純なフォームを設計し、Excelにデータを追加する方法を学びます。
- ステップ1 *-Altキーを押しながらF11キーを押してVBAウィンドウに移動し、[挿入]メニューに移動して[ユーザーフォーム]を選択します。 選択すると、次のスクリーンショットに示すようにユーザーフォームが表示されます。
- ステップ2 *-指定されたコントロールを使用してフォームを設計します。
- ステップ3 *-各コントロールを追加した後、コントロールに名前を付ける必要があります。 キャプションはフォームに表示されるものに対応し、名前はその要素のVBAコードを記述するときに表示される論理名に対応します。
- ステップ4 *-以下は、追加されたコントロールのそれぞれに対する名前です。
Control | Logical Name | Caption |
---|---|---|
From | frmempform | Employee Form |
Employee ID Label Box | empid | Employee ID |
firstname Label Box | firstname | First Name |
lastname Label Box | lastname | Last Name |
dob Label Box | dob | Date of Birth |
mailid Label Box | mailid | Email ID |
Passportholder Label Box | Passportholder | Passport Holder |
Emp ID Text Box | txtempid | NOT Applicable |
First Name Text Box | txtfirstname | NOT Applicable |
Last Name Text Box | txtlastname | NOT Applicable |
Email ID Text Box | txtemailid | NOT Applicable |
Date Combo Box | cmbdate | NOT Applicable |
Month Combo Box | cmbmonth | NOT Applicable |
Year Combo Box | cmbyear | NOT Applicable |
Yes Radio Button | radioyes | Yes |
No Radio Button | radiono | No |
Submit Button | btnsubmit | Submit |
Cancel Button | btncancel | Cancel |
- ステップ5 *-フォームを右クリックして[コードの表示]を選択し、フォームロードイベントのコードを追加します。
- ステップ6 *-次のスクリーンショットに示すように、オブジェクトのドロップダウンから「ユーザーフォーム」を選択し、「初期化」メソッドを選択します。
- ステップ7 *-フォームのロード時に、テキストボックスがクリアされ、ドロップダウンボックスが塗りつぶされ、ラジオボタンがリセットされることを確認します。
Private Sub UserForm_Initialize()
'Empty Emp ID Text box and Set the Cursor
txtempid.Value = ""
txtempid.SetFocus
'Empty all other text box fields
txtfirstname.Value = ""
txtlastname.Value = ""
txtemailid.Value = ""
'Clear All Date of Birth Related Fields
cmbdate.Clear
cmbmonth.Clear
cmbyear.Clear
'Fill Date Drop Down box - Takes 1 to 31
With cmbdate
.AddItem "1"
.AddItem "2"
.AddItem "3"
.AddItem "4"
.AddItem "5"
.AddItem "6"
.AddItem "7"
.AddItem "8"
.AddItem "9"
.AddItem "10"
.AddItem "11"
.AddItem "12"
.AddItem "13"
.AddItem "14"
.AddItem "15"
.AddItem "16"
.AddItem "17"
.AddItem "18"
.AddItem "19"
.AddItem "20"
.AddItem "21"
.AddItem "22"
.AddItem "23"
.AddItem "24"
.AddItem "25"
.AddItem "26"
.AddItem "27"
.AddItem "28"
.AddItem "29"
.AddItem "30"
.AddItem "31"
End With
'Fill Month Drop Down box - Takes Jan to Dec
With cmbmonth
.AddItem "JAN"
.AddItem "FEB"
.AddItem "MAR"
.AddItem "APR"
.AddItem "MAY"
.AddItem "JUN"
.AddItem "JUL"
.AddItem "AUG"
.AddItem "SEP"
.AddItem "OCT"
.AddItem "NOV"
.AddItem "DEC"
End With
'Fill Year Drop Down box - Takes 1980 to 2014
With cmbyear
.AddItem "1980"
.AddItem "1981"
.AddItem "1982"
.AddItem "1983"
.AddItem "1984"
.AddItem "1985"
.AddItem "1986"
.AddItem "1987"
.AddItem "1988"
.AddItem "1989"
.AddItem "1990"
.AddItem "1991"
.AddItem "1992"
.AddItem "1993"
.AddItem "1994"
.AddItem "1995"
.AddItem "1996"
.AddItem "1997"
.AddItem "1998"
.AddItem "1999"
.AddItem "2000"
.AddItem "2001"
.AddItem "2002"
.AddItem "2003"
.AddItem "2004"
.AddItem "2005"
.AddItem "2006"
.AddItem "2007"
.AddItem "2008"
.AddItem "2009"
.AddItem "2010"
.AddItem "2011"
.AddItem "2012"
.AddItem "2013"
.AddItem "2014"
End With
'Reset Radio Button. Set it to False when form loads.
radioyes.Value = False
radiono.Value = False
End Sub
- ステップ8 *-コードを[送信]ボタンに追加します。 送信ボタンをクリックすると、ユーザーはワークシートに値を追加できるはずです。
Private Sub btnsubmit_Click()
Dim emptyRow As Long
'Make Sheet1 active
Sheet1.Activate
'Determine emptyRow
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1
'Transfer information
Cells(emptyRow, 1).Value = txtempid.Value
Cells(emptyRow, 2).Value = txtfirstname.Value
Cells(emptyRow, 3).Value = txtlastname.Value
Cells(emptyRow, 4).Value = cmbdate.Value & "/" & cmbmonth.Value & "/" & cmbyear.Value
Cells(emptyRow, 5).Value = txtemailid.Value
If radioyes.Value = True Then
Cells(emptyRow, 6).Value = "Yes"
Else
Cells(emptyRow, 6).Value = "No"
End If
End Sub
- ステップ9 *-ユーザーが[キャンセル]ボタンをクリックしたときにフォームを閉じるメソッドを追加します。
Private Sub btncancel_Click()
Unload Me
End Sub
- ステップ10 *-[実行]ボタンをクリックしてフォームを実行します。 フォームに値を入力し、「送信」ボタンをクリックします。 次のスクリーンショットに示すように、値は自動的にワークシートに流れます。