Access97です。OSは2xです。
 
>入力フォームを作成しているのですが、最大文字数Overをする間際に罫線を
引いています。
>通常のツールボックスから直線を選択して表示しておりますが、入力する際
テキストBOXにフォーカスがある場合、テキストBox内の文字数Over直線が消え
てしまいます。
>>これを回避して常に最前に出す方法は無いのでしょうか?
VB6で作成された物を見たことはあるのですが・・・VBAでは・・・出来ますか??

A 回答 (2件)

>VBで出来てVBAで出来ない理由だけでもわかれば幸いです。


え??
VBで試してみたけど、Lineコントロールでは出来ません。

>ただ罫線を表示できれば尚良いかな?

PictureBoxを細くすると罫線に見えます。

PictureBoxのプロパティ
.Appearance = 0
.Width = 12
    • good
    • 0
この回答へのお礼

すみません!
何か勘違いしてたみたいです。
VBで見たことがあって「Line」で引いているのかとずっと思ってました。
確かにPictureBoxでやってみた所、簡単に出来ました。
ありがとうございます。

お礼日時:2002/03/06 10:41

こんにちは。

maruru01です。

直接質問の回答にはならないかも知れませんが。
やりたいことは、ユーザーに最大文字数をOverしたことを知らせたいということでしょうか。
それでしたら、別の方法で知らせてはどうでしょうか。
例えば、
1.制限文字数を越えたらメッセージを出す。(MsgBoxを出すか、フォームのどこかにラベルで表示するなど)
2.制限文字数を越えたら文字の色やテキストボックスの色を変える。
3.制限文字数を越えて入力出来ないようにする。
などです。
1,2はテキストボックスのChangeイベントに、3はChangeイベントかKeyPressイベントに書きます。

あくまで、罫線でということであれば的外れな回答ですが、参考になれば幸いです。
では。
    • good
    • 0
この回答へのお礼

ありがとうございます。
現在は、制限文字数を越えたらMsgBoxに「何行目が何文字OVER」と
表示しております。
ただ罫線を表示できれば尚良いかな?と思いまして質問させて頂いて
おります。

>VBで出来てVBAで出来ない理由だけでもわかれば幸いです。
よろしくお願い致します。

お礼日時:2002/03/05 12:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QコンボBOXとテキストBOXの連携の仕方

コンボBOXとテキストBOXの連携の仕方を教えてください。
データテーブルに
ID 色
1 赤
2 白
3 黄
4 青
というデータがあります。
メインフォームのID用コンボBOXにデータテーブルのIDリストを表示して選択できるように設定しました。
IDコンボBOXの横に、色用テキストBOXを作って、コンボに「1」と入れたらテキストBOXに「赤」と自動的に表示させたいのですがどのようにすればよいか教えてください。

Aベストアンサー

VB2005 Express Editionを前提とします。
該当するテーブルはhoge.mdbというAccessのデータベースとします
Windowsアプリケーションを新規作成し、
Form1に対し、Combobox1とTextBox1を貼り付けます。

さらにDataSource1を貼り付けます。
DataSource1コントロールのDataSourceプロパティをクリックし、小さなボタンを押します。
[プロジェクト データソースの追加]をクリック
[データベース]をクリック
[新しい接続]をクリック
[データソース]をSQL Server用からAccess用に変更
[データベース ファイル名]で[参照]からhoge.mdbを指定します

REM ↓コレがいいのかはよくわからん
[データベースにログオン]にユーザー名とパスワードを入力して[パスワードを保存]しておきます

接続の確認を行い、成功したら[OK]→[次へ]
[選択された接続は~]とか言われるので内容を読んだ上で[はい(Y)]→[次へ]
[データセット内に指定するデータベース オブジェクト(W)]で、使うテーブルを指定します。→[完了]

コンボボックスに小さな三角形があり、クリックすると
[Combobox タスク]が現れる。

[データソース]で使用するテーブルを指定します


REM 以下二行よく解ってない
[メンバの表示]と[値の表示]で[ID]を指定します
[選択された値]をなしのままにしておきます

REM TagとTextの違いを理解してません。ごめんなさい
TextBox1のプロパティで(DataBinding)の(詳細)、あるいはTagとTextで使用するテーブルの[色]を指定しておきます

実行します。これでとりあえず連動はしているはずです

VB2005 Express Editionを前提とします。
該当するテーブルはhoge.mdbというAccessのデータベースとします
Windowsアプリケーションを新規作成し、
Form1に対し、Combobox1とTextBox1を貼り付けます。

さらにDataSource1を貼り付けます。
DataSource1コントロールのDataSourceプロパティをクリックし、小さなボタンを押します。
[プロジェクト データソースの追加]をクリック
[データベース]をクリック
[新しい接続]をクリック
[データソース]をSQL Server用からAccess用に変更
[データベース ファイ...続きを読む

QVB6でLabelの最前面にText Boxを書く

どうも初めまして。
VB6.0の初級者です。
VB6.0でLabelの最前面にText Boxを書きたいのですがわかりません。
Labelの背面にText Boxが表示されてしまいます。
右クリックでText Boxを最前面にしてもだめです。

初心者ですいません。
宜しくお願いいたします。

Aベストアンサー

ごめんなさい ドラッグアンドドロップでは出来なかったようです m(__)m

ピクチャーボックスを用意します
背景色を何か適当な色に変更します ・・・ ラベルが乗ったかの判定がしやすいように
ラベルを選択して 編集 > 切り取り を実行
ピクチャーボックスを選択して > 編集 > 貼り付け を実行

これで ピクチャーボックスの左上にラベルが張り付くと思います
この状態なら ピクチャーボックスを移動すると ラベルも同時に移動できます

これが ピクチャーボックスをコンテナにするという操作です

Qテキストボックスのフォーカスについて

テキストボックスの設定としては、右揃えにしてフォーカスが常に一番右に表示させていたいのですが、常に一番右に表示させる方法がわかりません。
なので、分かる方教えていただけないでしょうか?
一番右というのはテキストボックスに数字などが入力されてもフォーカスは常に入力された数字の右側にフォーカスがあるということです。

Aベストアンサー

こんにちは。ベタですがこんな感じ?

Private Sub Text1_GotFocus()
  Text1.SelStart = Len(Text1.Text) + 1
End Sub
'
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
  If KeyCode = 37 Then KeyCode = 0
  Text1.SelStart = Len(Text1.Text) + 1
End Sub

' // マウス操作でカーソルも移動させたくないなら
Private Sub Text1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  Text1.SelStart = Len(Text1.Text) + 1
End Sub

QエクセルVBA テキストボックスへのセットフォーカスについて

エクセルVBAでユーザーフォーム内に配置されたテキストボックス
への数値の入力時に、指定範囲内になければメッセージボックスで
規格外であることを警告し、その規格外が入力されたテキストボックス
を強制的に空欄にし、次のテキストボックスにフォーカスを移動させずに、入力間違いのテキストボックスにフォーカスを戻したいのですが
どうすればよいのでしょうか?
自分で考えた構文です。
Private Sub TextBox1_AfterUpdate()
Dim A As Single

A = TextBox1.Text
If A < 1.99 Or A > 3.00 Then
MsgBox "規格外!!"
    TextBox1.Text = ""
TextBox1.SetFoucus
End If
Exit Sub

End Sub

これですと、次のテキストボックスにフォーカスが移動してしまいます。
次のテキストボックスにフォーカスを移動させずに、規格内の値が
入力されるまでフォーカスを移動させない方法を教えて下さい。
お願い致します。

エクセルVBAでユーザーフォーム内に配置されたテキストボックス
への数値の入力時に、指定範囲内になければメッセージボックスで
規格外であることを警告し、その規格外が入力されたテキストボックス
を強制的に空欄にし、次のテキストボックスにフォーカスを移動させずに、入力間違いのテキストボックスにフォーカスを戻したいのですが
どうすればよいのでしょうか?
自分で考えた構文です。
Private Sub TextBox1_AfterUpdate()
Dim A As Single

A = TextBox1.Text
If A < 1.99 Or A...続きを読む

Aベストアンサー

こんにちは。Wendy02です。

>イベントをAfterUpdateにしましたが、Wendy02さんはExitを使っていますが、AfterUpdateではなぜ正しく動作しないのでしょうか?

イベント自体の問題よりも、イベントの機能を良くみたほうがよいですね。
_Exit(ByVal Cancel As MSForms.ReturnBoolean)

ここで、Return(戻り値)のブーリアン値があるようなので、それを利用しただけです。

>Cancel = True
が、フォーカスの移動をキャンセルしています。

別に、Exit でなくても良いのです。例えば、

_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
のKeyCode に入った 「13(Enter)」のコードを 0 で打ち消す方法でも、可能です。

If が True の時に、
 MsgBox "規格外!!",16
 TextBox1.Text = ""
 KeyCode = 0

でも可能です。

「なぜ?」というよりも、そういうパターンがあるということです。たぶん、AfterUpDateでも、方法によってはできるとは思いますが、かなり難しくなるのではないかなって思うだけです。

こんにちは。Wendy02です。

>イベントをAfterUpdateにしましたが、Wendy02さんはExitを使っていますが、AfterUpdateではなぜ正しく動作しないのでしょうか?

イベント自体の問題よりも、イベントの機能を良くみたほうがよいですね。
_Exit(ByVal Cancel As MSForms.ReturnBoolean)

ここで、Return(戻り値)のブーリアン値があるようなので、それを利用しただけです。

>Cancel = True
が、フォーカスの移動をキャンセルしています。

別に、Exit でなくても良いのです。例えば、

_KeyDown(By...続きを読む

Qテキストボックスの桁数をカウントして、フォーカス移動

Win2000、VB6.0です。

テキストボックスとADOコントロールを使用して、レコードを編集・更新するフォームを作っています。
ただ、簡単に書く為に下の説明文ではDBについては書きません。

Form1に、Text1とText2があるとします。
Tab移動だけではなく、Text1に4桁目まで入力された時点で、Text2へフォーカスが移動するようにしたいと考えています。
Text1のChangeイベントで、
------------------------------------
Private Sub Text1_Change()
  If Len(Text1.Text) >= 4 Then
    Text2.SetFocus
  End If
End Sub
------------------------------------
以上のように記述しています。
ただ、Form1のロード時に、
------------------------------------
Private Sub Form_Load()
  Text1.Text = "1111"
End Sub
------------------------------------
以上のように記述すると、
「実行時エラー"5";」
「プロシージャの呼び出し、または引数が不正です。」
とエラーが発生してしまいます。

ロード時にテキストボックスに表示しつつ、入力された現在の桁数をカウントして、フォーカス移動する方法は無いのでしょうか?
よろしくお願いします。

Win2000、VB6.0です。

テキストボックスとADOコントロールを使用して、レコードを編集・更新するフォームを作っています。
ただ、簡単に書く為に下の説明文ではDBについては書きません。

Form1に、Text1とText2があるとします。
Tab移動だけではなく、Text1に4桁目まで入力された時点で、Text2へフォーカスが移動するようにしたいと考えています。
Text1のChangeイベントで、
------------------------------------
Private Sub Text1_Change()
  If Len(Text1.Text) >= 4 Then
    Text2.SetF...続きを読む

Aベストアンサー

SetFocus を使わずに Enabled でフォーカスを移したら?
MaxLength も使って。

Private Sub Form_Load()
  With Text1
    .IMEMode = 3
    .MaxLength = 4
    .Text = "1111"
  End With
End Sub

Private Sub Text1_Change()
  If Len(Text1.Text) >= 4 Then
    With Text1
      .Enabled = False
      .Enabled = True
    End With
  End If
End Sub


このカテゴリの人気Q&Aランキング

おすすめ情報