Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9767 / 13644 ツリー ←次へ | 前へ→

【25550】ComboBoxでの参照(文字と数値の違いについて) 05/6/4(土) 0:17 質問[未読]
【25551】Re:ComboBoxでの参照(文字と数値の違いに... ni 05/6/4(土) 0:37 回答[未読]
【25553】Re:ComboBoxでの参照(文字と数値の違い... kobasan 05/6/4(土) 8:21 発言[未読]
【25564】Re:ComboBoxでの参照(文字と数値の違い... 05/6/5(日) 3:43 お礼[未読]

【25550】ComboBoxでの参照(文字と数値の違いにつ...
質問    - 05/6/4(土) 0:17 -

引用なし
パスワード
   シートに貼り付けた「ComboBox1」に、同一シートのA1〜A10の値が入っています。
そして、Comboボックスに適当な値を入力して、それがA1〜A10に該当していれば、何番目で該当したかを、セル「A15」に出力し、該当しなかったり、ComboBox1の中身が空っぽなら、セル「A15」には何も表示しないようにするプログラムを作りました。
以下に記述します。

Private Sub ComboBox1_Change()

Dim i As Long

For i = 1 To 10
 If ComboBox1 = Worksheets("Sheet1").Cells(i,1) Then
  Range("A15") = i
  Exit For
 ElseIf ComboBox1 = "" Then
  Range("A15") = ""
 Else
  Range("A15") = ""
 End If
Next

End Sub


A1〜A10に入っているデータが、文字列の場合は問題なく動いたのですが、数値が入っている場合には上手く行きませんでした。
文字列処理と数値処理では、何か記述が違うのでしょうか?

【25551】Re:ComboBoxでの参照(文字と数値の違い...
回答  ni  - 05/6/4(土) 0:37 -

引用なし
パスワード
   こんにちは

コントロールの値は全て文字列なので、セルの値を文字列に変換してから
比較したらいかがでしょう。

 If ComboBox1.Value = CStr(Worksheets("Sheet1").Cells(i,1).Value) Then

【25553】Re:ComboBoxでの参照(文字と数値の違い...
発言  kobasan  - 05/6/4(土) 8:21 -

引用なし
パスワード
   ▼氷 さん  おはようございます。

>文字列処理と数値処理では、何か記述が違うのでしょうか?

今回のようなことを回避するためには、
ComboBox1.Text とCells(i, 1).Text のようにプロパティを丁寧につけることです。

Dim i As Long
  Range("A15").ClearContents
  For i = 1 To 10
    If ComboBox1.Text = "" Then Exit For      
    If ComboBox1.Text = Worksheets("Sheet1").Cells(i, 1).Text Then
      Range("A15").Value = i
      Exit For
    End If
  Next

【25564】Re:ComboBoxでの参照(文字と数値の違い...
お礼    - 05/6/5(日) 3:43 -

引用なし
パスワード
   niさん、kobasanさん、ご返信ありがとうございます^^
おかげさまで問題を解決することが出来ました。
プロパティ、ついつい面倒臭くて省略してしまっていたのですが、大事だってことがよく分かりました><
これからはちゃんとつけるようにします。。
本当にありがとうございましたm(_ _)m

9767 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free