■ TextBoxコントロールについて詳しく知ろう
前回に引き続き、ExcelエクセルにおけるUserFormユーザーフォームの解説です。
今回は、TextBoxコントロールオブジェクトの解説です。
TextBoxコントロール(テキストボックスコントロール)オブジェクト
ユーザーが入力した情報を表示したり取得したりします。
既定のプロパティ:Valueプロパティ
既定のイベント:Changeイベント
■ TextBoxコントロールオブジェクトのプロパティ
・AutoSize:Trueで表示内容の文字に合わせて、コントロールの大きさを自動調整します。Falseでコントロールの大きさを固定します(自動調節しません)。
・MaxLength:TextBoxコントロールに入力できる最大文字数を設定します。
・AutoTab:MaxLengthに設定された最大文字数が入力されたとき、フォーカスを次のコントロールに移すかどうかを設定します。
・BackColor:コントロールの背景色を設定します。背景色はRGB関数、整数、定数で指定することが可能です。コントロールの背景スタイルがFmBackStyleOpaqueになっている必要があります。
・BackStyle:コントロールの背景スタイルを設定します。0 - fmBackStyleTransparentで背景を透明に、1 - FmBackStyleOpaqueで背景を不透明にします。既定値は1です。
(例)
TextBox1.BackStyle = fmBackStyleTransparent
この例では、TextBox1コントロールの背景を透明にしています。 |
・BoderColor:コントロールの境界線色を設定します。コントロールの境界線スタイルがfmBorderStyleSingleになっている必要があります。
・BoderStyle:コントロールの境界線スタイルを設定します。0 - fmBorderStyleNoneで境界線を表示しません。1 - fmBorderStyleSingleで境界線を表示します。既定値は0です。
・CanPaste:クリップボードにあるデータがコントロールに貼り付け可能かどうかを返します。Trueなら貼り付け可能で、Falseなら貼り付け不可です。値の取得のみ可能です。
・ControlSource:コントロールのValueプロパティにリンクさせるExcelワークシートのセル範囲を指定します。
(例)
TextBox1.ControlSource = "a1"
この例では、TextBox1コントロールのValueプロパティがA1セルにリンクしています。TextBox1コントロールの初期値にA1セルの値が設定され、TextBox1コントロールの値を書き換えるとA1セルの値も変わります。 |
・ControlTipText:マウスポインタをコントロール上に置いたとき、表示する文字列を設定します。
・MultiLine:コントロールで複数行のテキストの表示を許可するかどうかを設定します。Trueが既定値です。
・CurLine:コントロールの現在の行を取得、設定します。
・LineCount:コントロールに入力されているテキストの行数を返します。
・DragBehavior:コントロールにドラッグアンドドロップを許可するかどうかを設定します。
fmDragBehaviorDisabledが既定値でドラッグアンドドロップを許可しません。
fmDragBehaviorEnabledを選択するとドラッグアンドドロップを許可します。
・Enabled:TextBoxコントロールの場合、Trueで通常の表示と操作ができます、Falseで淡色表示となり、イベントに応答しなくなります。
・EnterFieldBehavior:コントロールがフォーカスを取得したとき文字列を選択するかどうかを設定します。
fmEnterFieldBehaviorSelectAllが既定値で文字列をすべて選択します。
FmEnterFieldBehaviorRecallSelection選択すると文字列を選択しません。
・EnterKeyBehavior:コントロールでEnterキーを押した場合の動作を設定します。Trueで新しい行が作成されます。Falseでタブオーダーの次のオブジェクトにフォーカスが移ります (既定値)。※ FalseでもShift+Enterで改行することができます。
・Font:コントロールで表示するテキスト属性を設定します。
・ForeColor:コントロールの前景色を指定します。TextBoxコントロールの場合、表示されるValueの文字色を設定します。
・Height、Width:コントロールの高さ、幅をポイント単位で指定します。
・Left、Top:コントロールの位置をフォーム左端、上端からの距離を基準に設定します。
・IMEMode:コントロールがフォーカスを取得したとき日本語入力システムの実行モードを設定します。以下の設定が可能です。
0-fmIMEModeNoControl |
IME のモードを変更しません (既定値)。 |
1-fmIMEModeOn |
IME をオンにします。 |
2-fmIMEModeOff |
IME をオフにして英語モードにします。 |
3-fmIMEModeDisable |
IME をオフにします。ユーザーはキー操作によってIMEをオンにすることができなくなります。 |
4-fmIMEModeHiragana |
全角ひらがなモードで IME をオンにします。 |
5-fmIMEModeKatakana |
全角カタカナ モードで IME をオンにします。 |
6-fmIMEModeKatakanaHalf |
半角カタカナ モードで IME をオンにします。 |
7-fmIMEModeAlphaFull |
全角英数モードで IME をオンにします。 |
8-fmIMEModeAlpha |
半角英数モードで IME をオンにします。 |
・Locked:コントロールを編集可能にするかどうかを設定します。Trueで編集不可、False(既定値)編集可になります。編集不可になっていてもEnabledプロパティがTrueに設定されていればイベントが発生しフォーカスを取得することが可能です。
・MaxLength:コントロールに入力できる最大文字数を設定します。最大文字数は全角・半角にかかわらず同一です。
・MousePointer、MouseIcon:コントロールの上にカーソルを置いたときに表示する形状を設定します。MouseIconはMousePointerが99-fmMousePointerCustomのときに、表示する画像をLoadPicture関数で読み込みます。
(例)
TextBox1.MousePointer = fmMousePointerHourGlass
この例では、コントロールにカーソルを合わせるとカーソル形状が砂時計に変更されます。 |
TextBox1.MousePointer = fmMousePointerCustom
TextBox1.MouseIcon = LoadPicture("C:\test.ico")
この例では、コントロールにカーソルを合わせるとC:\にあるtest.icoにカーソル形状が変更されます。 |
・Name:コントロールの名前を設定、取得します。
・Parent:指定したコントロールを含む親オブジェクトを操作します。
(例)
TextBox1.Parent.BackColor = vbRed
この例では、TextBox1コントロールが配置されている親オブジェクト(UserFormやFrameなど)の背景色を赤に変更します。 |
・PasswordChar:コントロールで実際に入力された文字の代わりに表示する文字を設定します。
(例)
TextBox1.PasswordChar = "*"
この例では、TextBox1コントロールに入力された文字が全て"*"印で表示されます。 |
・ScrollBars:コントロールに垂直スクロールバー、水平スクロールバーを表示するかどうかを設定します。
(例)
TextBox1.ScrollBars = fmScrollBarsHorizontal
この例では、TextBox1コントロールに入力された文字がコントロールの右端を超えたときに、水平方向にスクロールバーを表示します。ただし、MultiLineプロパティがFalseになっている必要があります。コントロールは、あらかじめスクロールバーが表示される領域を見込んでサイズを設定しておく必要があります。 |
・SelectionMargin:文字列左側の余白をクリックすると、その行の文字列を選択できるようにします。Trueが既定値です。
・SelStart:コントロール内文字列のポインタ位置を返します。
・SelLength:コントロール内文字列で選択されている文字数を返します。
・SelText:コントロール内文字列で選択されている文字列を返します。設定することも可能です。
(例)
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, _
ByVal Shift As Integer)
Debug.Print TextBox1.SelStart
Debug.Print TextBox1.SelLength
Debug.Print TextBox1.SelText
End Sub
この例では、TextBox1コントロールでKeyUpイベントが発生した際に、現在のポインタ位置、選択されている文字数、選択されている文字列を返します。 |
・TabIndex:タブオーダー内の順番を設定します。先頭のインデックスは0 です。
・TabKeyBehavior:コントロール内でタブ文字を許可するかどうかを設定します。TrueにするとTextBox内でタブ文字が使用できますが、この場合MultiLineプロパティをTrueにする必要があります。既定値はFalseです。なお、Ctrl+TabでTabKeyBehaviorプロパティに関係なくタブ文字が挿入できます。
・TabStop:FalseにするとTab キーによるフォーカス移動の際、このオブジェクトをスキップします。
・Text、Value:コントロールに文字列を設定します。値の取得も可能です。Textプロパティに設定した値はValueプロパティにも割り当てられます。
・Tag:コントロールに補足的な情報(文字列)を設定、取得できます。
・TextAlign:文字列を配置する位置を設定します。
1 - fmTextAlignLeft文字列を左端に表示します (既定値)。
2 - fmTextAlignCenter文字列を中央揃えで表示します。
3 - fmTextAlignRight文字列を右端に表示します。
・TextLength:コントロールの編集領域にある文字列の文字数を返します。
・Visible:オブジェクトの表示・非表示を設定します。Trueで表示、Falseで非表示です。
・WordWrap:文字列をワードラップするかしないかを設定します。Trueでは、コントロールの最後で行が折り返され表示します。Flaseでは、コントロールの最後で行が折り返されません。MultiLineプロパティをFalseにするとWordWrapプロパティの設定は無視されます。
■ TextBoxコントロールオブジェクトのメソッド
・Move:コントロールを移動します。
(例)
TextBox1.Move 100, 50, 200, 150
この例では、TextBox1コントロールをUserFormの左端から100、上端から50ポイントの位置に移動させ、幅200、高さ150ポイントで表示します。 |
・Copy:コントロールの文字列をクリップボードにコピーします。元の文字列は削除されません。
・Cut:コントロールの文字列をクリップボードにコピーします。元の文字列は削除されます。
・Paste:クリップボードの文字列をコントロールに貼り付けます。
・SetFocus:コントロールにフォーカスを移します。
・ZOrder:指定されたオブジェクトのZオーダーを変更します。fmTopでその他のコントロールの最前面に、fmBottomでその他のコントロールの最背面に表示します。
■ TextBoxコントロールオブジェクトのイベント
・DblClick:コントロールをダブルクリックしたとき発生します。
・MouseDown、MouseUp:MouseDownはマウスボタンを押したとき、MouseUpはマウスボタンを離したときに発生します。
(例)
Private Sub TextBox1_MouseDown(ByVal Button As Integer, _
ByVal Shift As Integer, _
ByVal X As Single, ByVal Y As Single)
TextBox1.Text = "MouseDown"
End Sub
Private Sub TextBox1_MouseUp(ByVal Button As Integer, _
ByVal Shift As Integer, _
ByVal X As Single, ByVal Y As Single)
TextBox1.Text = "MouseUp"
End Sub
この例では、Text1コントロールをクリックしている間はラベルに"MouseDown"の表示がされ、クリックを離すと"MouseUp"の表示に変わります。 |
・MouseMove:コントロールの上にカーソルが移動したとき発生します。
・KeyDown、KeyUp:KeyDownはキーを押したとき、KeyUpはキーを離したときに発生します。
・KeyPress:ANSI コードまたはシフトJISコードに対応する文字キーのいずれかを押すと発生します。
(例)
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, _
ByVal Shift As Integer)
TextBox1.Text = "KeyDown"
End Sub
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
TextBox1.Text = "KeyPress"
End Sub
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, _
ByVal Shift As Integer)
TextBox1.Text = "KeyUp"
End Sub
この例では、"A"文字列キーを押すと、KeyDownイベントに続けてすぐKeyPressイベントが発生するため、TextBox1コントロールの文字列は"KeyPress"となり、離したときにKeyUpイベントが発生し"KeyUp"の文字列が表示されます。
"Shift"キーを押すと、KeyPressイベントが発生しないため、TextBox1コントロールの文字列は"KeyDown"となり、離したときに"KeyUp"の文字列が表示されます。 |
・Change:コントロールの文字列を変更したときに発生します。
・AfterUpdate、BeforeUpdate:コントロールの文字列を変更した後、他のコントロールにフォーカスを移したときに発生します。
AfterUpdateは実際にデータが変更された後に発生します。
BeforeUpdateは変更を実際にデータが変更される前に発生するため引数CancelにTrueを設定すると、フォーカスは元のコントロールに残り、AfterUpdateイベントもExitイベントも発生しません。
(例)
Private Sub TextBox1_Change()
Debug.Print "Change"
End Sub
Private Sub TextBox1_AfterUpdate()
Debug.Print "AfterUpdate"
End Sub
Private Sub TextBox1_BeforeUpdate( _
ByVal Cancel As MSForms.ReturnBoolean _
)
Debug.Print "BeforeUpdate"
If Not IsNumeric(TextBox1.Text) Then
Cancel = True
End If
End Sub
この例では、TextBox1コントロールの文字列が変更されるたびにChangeイベントが発生します。他のコントロールにフォーカスを移す際、BeforeUpdateイベントで入力内容が数値かどうかをチェックし、数値でなければ変更をキャンセルします。数値の場合は、他のコントロールにフォーカスが移り、AfterUpdateイベントが発生します。 |
・Enter、Exit:Enterイベントは、同一フォーム上にある別のコントロールからフォーカスを受け取る前に発生します。Exit イベントは、同一フォーム上にある別のコントロールにフォーカスを移す前に発生します。
以上で、TextBoxコントロールオブジェクトの解説を終わります。
次回は、ComboBoxコントロールオブジェクトの解説を行います。
|