ACCESS2000を使用しています。

コンボボックスを使用しているのですが、コンボボックスの中から選択して入力したのか、ダイレクトに入力したのかを区別するということは出来るのでしょうか。

コンボボックスとして作成した項目のところに、コンボボックスから連続して複数の値を取得する ということをしています。

つまり、コンボボックスの中に
   1111
   222
   333333
とあるとすると
 2221111 という項目にしたいというときです。

上記の質問は 間違って 作成したとき 2221111 を 後ろの1111を削除して 222に戻したい としたいときのことです。

 よろしくお願いいたします。
  



 

このQ&Aに関連する最新のQ&A

A 回答 (1件)

ChangeイベントとClickイベント

この回答への補足

早速回答ありがとうございます。
説明が足りなかったようなので、補足します。

コンボボックスを使用しているのですが、コンボボックスから項目を選択して入力したのか、コンボボックスを使用しないで直接入力したのかを判別したいということです。
 そういう意味での変更前と変更後ということです。 
 Me!XXXXXX.column(0) がヌルかどうかで判断したのですが、うまくいきません。 
 Changeイベント とClickイベント で どのようにしようするのですか。
よろしくお願いいたします。

補足日時:2001/10/13 17:30
    • good
    • 0

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

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

Qコンボボックスで日本語入力をハンドルするとき

またよろしくお願いいたします。

先月よりまたぜんぜんやったことのない言語をいじることになってしまいました。
Visual Studioってけっこうヒント出してくれるので、ひーこら言いながら書けてはいますが、ここは解決できません…。
ネット内を探してもありそうで見つからないんで、この場をお借りいたします。

.NET 2005 の Visual Basic についてです。

' ------例
Class Form1 As Form
 Dim i As Integer
 Dim cmb(99) As Combobox

 For i = 0 To 99
  AddHandler cmb(i).TextChanged, AddressOf cmb_TextChanged
 Next i
  ...
 Sub cmb_TextChanged( なんとかかんとか )
  ...
  Msgbox("入力検知")
 End Sub
End Class

抜き出すとこんなようなコードのはずですが、要するに、複数のコンボボックスにTextChangedのイベントハンドラを仕組んだだけです。
これで「できた!」と思ってたのですが、実行してみると、1文字ずつ入力するぶんにはいっこうに問題ないんです。ところが日本語変換を経由してやると、いっぺんに2文字以上入ります。
そのとき、例えば「生麦生米生卵」と変換して入力すると、6回ハンドルされて6回メッセージが出てきます。
ちょっとこれだとうるさいです。
ので、ハンドルが1回だけになるようなことって、可能なのでしょうか。
なお、入力は手入力する場合の他に、プログラム上から複数のボックスへ入力する場合もあります。

重ねてよろしくお願いいたします。m(__)m

またよろしくお願いいたします。

先月よりまたぜんぜんやったことのない言語をいじることになってしまいました。
Visual Studioってけっこうヒント出してくれるので、ひーこら言いながら書けてはいますが、ここは解決できません…。
ネット内を探してもありそうで見つからないんで、この場をお借りいたします。

.NET 2005 の Visual Basic についてです。

' ------例
Class Form1 As Form
 Dim i As Integer
 Dim cmb(99) As Combobox

 For i = 0 To 99
  AddHandler cmb(i).TextChanged, ...続きを読む

Aベストアンサー

まずはじめに、1文字ずつイベントを検知する必要性があるんでしょうか?
そうであれば、恐らく回避は出来ないのではないかと。
そうでないのであれば、まずは「何をもって入力完了とみなすか」を
考えた方がいいと思います。
フォーカスが他のコントロールに移ったときに完了とするとか、
Enterを押されたときに完了とするとか。
あとは、Validating、Validatedイベントを使って検知なりチェックなりを
行うのがいいかと。
ちなみに、Enterを押されたときに完了とするような処理を行うなら、
KeyDownイベント辺りでEnterキーを検知したら、Validateメソッドで
Validatingイベントを起こせば…よかったはず。確か。

あと、プログラムで文字列をセットする際には、RemoveHandlerで一時的に
イベントハンドラを外してイベントプロシージャが動かないようにしておき、
終わったらAddHandlerで元に戻すのがいいと思います。

QVBA コンボボックスの項目入力

お世話になります。

Excel2002のVBAにて コンボボックスへの項目の入力について
質問させて頂きます。

現在行いたい処理はB27からB56のセルに入力されている数値
のなかからB62からB91に入力されている数値と重複の無いもの
をコンボボックスへ追加したいと考えております(空白セルは
追加しない)。

以下の通りではどうもうまくいかないので宜しくお願いします。

' For i = 27 To 56
' If Range("B" & i) <> "" Then
' ComboBox1.AddItem Range("B" & i)
' For j = 62 To 91
' If Range("B" & j) <> "" Then
' ComboBox1.RemoveItem Range("B" & j)
' End If
' Next
' End If
' Next

お世話になります。

Excel2002のVBAにて コンボボックスへの項目の入力について
質問させて頂きます。

現在行いたい処理はB27からB56のセルに入力されている数値
のなかからB62からB91に入力されている数値と重複の無いもの
をコンボボックスへ追加したいと考えております(空白セルは
追加しない)。

以下の通りではどうもうまくいかないので宜しくお願いします。

' For i = 27 To 56
' If Range("B" & i) <> "" Then
' ComboBox1.AddItem Range("B" & i)
' ...続きを読む

Aベストアンサー

>ComboBox1.RemoveItem Range("B" & j)

RemoveItemメソッドはこんな構文ですか? 違うのでは?
疑問が生じたら、先ずヘルプ参照!(^^;;;

ま、それは置いといて、
初めから62~91にないものを登録した方がいいでしょう。
 
質問者のコードを利用すると(Forを2度使用)

Dim flag As Boolean

For i = 27 To 56
  flag = False
  If Range("B" & i) <> "" Then
    For j = 62 To 91
      If Range("B" & j) = Range("B" & i) Then
        flag = True
        Exit For
      End If
    Next j

    If flag = False Then
      ComboBox1.AddItem Range("B" & i)
    End If

  End If
Next i
'-----------------------------------------


'-------- Findメソッドを使うと ----------

Dim FoundCell As Range

For i = 27 To 56
 If Range("B" & i) <> "" Then

   Set FoundCell = Range("B62:B91").Find(Range("B" & i).Value, , xlValues, xlWhole)

   If FoundCell Is Nothing Then
     ComboBox1.AddItem Range("B" & i)
   End If

 End If
Next i
'---------------------------------------------
 
以上です。
 

>ComboBox1.RemoveItem Range("B" & j)

RemoveItemメソッドはこんな構文ですか? 違うのでは?
疑問が生じたら、先ずヘルプ参照!(^^;;;

ま、それは置いといて、
初めから62~91にないものを登録した方がいいでしょう。
 
質問者のコードを利用すると(Forを2度使用)

Dim flag As Boolean

For i = 27 To 56
  flag = False
  If Range("B" & i) <> "" Then
    For j = 62 To 91
      If Range("B" & j) = Range("B" & i) Then
        flag = True
   ...続きを読む

Qコンボボックスの特定項目だけを選択不可に

VB6でコンボボックスの特定の項目だけを選択不可能にすることはできるでしょうか?

Aベストアンサー

VB6だけでやるのは無理だと思います。
そもそもコンボボックスは選択できるリストを表示するものですから、
条件によって選択可能かどうかが変わるのであれば、その条件が変更された度にリストを作成しなおすというのが普通の動きだと思います。
それが絶対にできないのであれば、コンボボックスのイベントで拾ってエラーを返すしか無いかと。

Qサブフォームの行ごとにコンボボックスの表示項目を変更する方法が知りたいです

現在Access VBAでサブフォームの中にあるコンボボックスの一覧を、サブフォームの表示項目を行ごとに変更する処理を探しています。

まず、下の画像をご覧下さい。
http://www.accessclub.jp/bbs4/img/3949.jpg

下の画像の場合、「地区」列の項目が「中部地方」か「近畿地方」かによって、「都道府県」コンボボックスの一覧を変更させたいのです。
例えば、「地区」列の項目が「中部地方」になっている行は、「都道府県」の項目には中部地方の県名がコンボボックスの一覧に表示され、「近畿地方」になっている行は、近畿地方の2府4件がコンボボックスの一覧に表示されるような処理を作成したいのです。

下は各テーブルの情報を表示させた画像です。
http://www8.uploader.jp/user/minori/images/minori_uljp03073.jpg

そのようなプログラムを作ろうと、下のようなプログラムを作成しました。
Private Sub Form_Load()

'AreaID  :「地区」コンボボックス
'AreaSubID:「都道府県」コンボボックス

strSQL = "SELECT "
strSQL = strSQL & "AreaSubID,PrefectureName "
strSQL = strSQL & "FROM "
strSQL = strSQL & "M_AREA_SUB "
strSQL = strSQL & "WHERE AreaID = " & Me.AreaID.Column(0) & " "
strSQL = strSQL & "ORDER BY AreaSubID "

Me.AreaSubID.RowSource = strSQL

End Sub

しかし、上のプログラムでは全ての、「都道府県」列に処理が行われるため、一覧を変更させたくない行まで変更がかかってしまいます。
サブフォームの中にあるコンボボックスの更新処理で、指定の行だけを変更させるということは可能なのでしょうか?
そして可能であればその方法を教えていただけませんでしょうか?

よろしくお願いします。
なお、OSとAccessのバージョンは以下の通りです。

OS:Windows XP SP2
Accessのバージョン:2003

現在Access VBAでサブフォームの中にあるコンボボックスの一覧を、サブフォームの表示項目を行ごとに変更する処理を探しています。

まず、下の画像をご覧下さい。
http://www.accessclub.jp/bbs4/img/3949.jpg

下の画像の場合、「地区」列の項目が「中部地方」か「近畿地方」かによって、「都道府県」コンボボックスの一覧を変更させたいのです。
例えば、「地区」列の項目が「中部地方」になっている行は、「都道府県」の項目には中部地方の県名がコンボボックスの一覧に表示され、「近畿地方」になって...続きを読む

Aベストアンサー

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1025421305
を参照ください。

QHTMLコンボボックスへの項目追加

今、HTMLのWebを作成しているのですが行き詰ってしまったので、何か方法をご存知の方がおられたら、教えて頂けたらと思います。

下記のようなコンボボックスにvbscriptで項目を追加していきたいのですが、うまくいきません。
---------------------------------
<form name="myform">
<select name="name1"></select>
<select name="name2"></select>
</form>
---------------------------------
何かよい方法はありますでしょうか?

簡単なサンプルコード等を記述して頂けると助かります。
よろしくお願いします。

Aベストアンサー

> Set myOption = myform.name1.createElement("OPTION")
> myOption.options.text = "test"
> myOption.options.value = "test"
> myform.name1.add(myOption)
> (最後の行は間違ってますよねぇ。。)

えー・・・悲しいお知らせです。
逆に「最後の行だけ、かろうじて正解」です。


サンプルをVBScriptに読み替えると、
----------------------------------------------------------
Dim oOption
Set oOption = document.createElement("OPTION")
oOption.text="Apples"
oOption.value="5"
document.all.MyList.add oOption
----------------------------------------------------------
こんな感じになります。
#キーワードは、ほとんど同じ。

違うのは、純粋にシンタックス部分だけ・・・

・変数宣言がVBScriptでは「Dim」で、JScriptでは「var」
・VBScriptでは変数宣言と値の代入が同時にはできないのに対して、JScriptでは同時に可能(var宣言と、変数=値を一度にできる)
・VBScriptでは、Objectの代入には「Set」が必要。
・JScriptでは、各コマンドを「;」で区切らなければならないが、VBScriptでは不要。

> Set myOption = myform.name1.createElement("OPTION")
> myOption.options.text = "test"
> myOption.options.value = "test"
> myform.name1.add(myOption)
> (最後の行は間違ってますよねぇ。。)

えー・・・悲しいお知らせです。
逆に「最後の行だけ、かろうじて正解」です。


サンプルをVBScriptに読み替えると、
----------------------------------------------------------
Dim oOption
Set oOption = document.createElement("OPTION")
oOption.text="Apples"
oOption.value="5"
do...続きを読む


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

おすすめ情報