Excel VBA質問箱 IV

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

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


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

【7186】コンボボックス sibira 03/8/26(火) 9:30 質問
【7189】Re:コンボボックス つん 03/8/26(火) 10:19 回答
【7190】あ、違う! つん 03/8/26(火) 10:38 回答
【7193】Re:あ、違う! Jaka 03/8/26(火) 11:35 発言
【7194】Re: sibira 03/8/26(火) 11:40 質問
【7202】Re: つん 03/8/26(火) 13:37 発言
【7203】Re: sibira 03/8/26(火) 14:53 お礼
【7205】Re: Jaka 03/8/26(火) 15:39 発言

【7186】コンボボックス
質問  sibira  - 03/8/26(火) 9:30 -

引用なし
パスワード
   コンボボックスのリストからデータを選択をしたらテキストボックスにデータが入力されるようにしたいのですが、まず、この、コンボボックスのリストからデータを選択するというのはどういう宣言をするのでしょうか?????
(お礼の場合、どこからすれば良いのでしょうか?すみません変な質問もして・・・)

【7189】Re:コンボボックス
回答  つん E-MAIL  - 03/8/26(火) 10:19 -

引用なし
パスワード
   sibira さん

Private Sub CommandButton1_Click()

  TextBox1.Value = ComboBox1.Value

End Sub

こうですね。
ヘルプに色々載ってるので、一度読んで見てください。
それから、返信は記事の横に「返信」があるので、
それを押したら、返信用のページになります。
「削除」と縦並びになってる上のやつね。

【7190】あ、違う!
回答  つん E-MAIL  - 03/8/26(火) 10:38 -

引用なし
パスワード
   コンボボックスのチェンジイベントでしたほうがいいな、と
思ったんだった。

Private Sub ComboBox1_Change()

  TextBox1.Value = ComboBox1.Value
  
End Sub

【7193】Re:あ、違う!
発言  Jaka  - 03/8/26(火) 11:35 -

引用なし
パスワード
   つんさんこんにちは。
こんなのもありますぜ。

Private Sub ComboBox1_Change()
  If ComboBox1.ListIndex <> -1 Then
    TextBox1.Value = ComboBox1.List(ComboBox1.ListIndex)
  End If
End Sub

【7194】Re:
質問  sibira  - 03/8/26(火) 11:40 -

引用なし
パスワード
   コンボボックスのリストを選んだら他のテキストボックス2・3・4・5にエクセルで作った表のデータが入力されると言った感じなのですが、うまくいきません。

Private Sub ComboBox1_Change()

    TextBox1.Text = ComboBox1.Value


  Set myrange = Range(Cells(2, 5), Cells(Range("E65536").End(xlUp).Row, 5))
           'データ範囲
  
  Dim myrange As Range
  
  For Each wRange In myrange
    If wRange.Value = Me.ComboBox1.Text Then
      Me.TextBox2.Value = wRange.Offset(, 1).Value
      'コードをテキストボックス2へ転送
    End If
    If wRange.Value = Me.ComboBox1.Value Then
      Me.TextBox3.Value = wRange.Offset(, -1).Value
      'コードをテキストボックス3へ転送
    End If
    If wRange.Value = Me.ComboBox1.Value Then
      Me.TextBox4.Value = wRange.Offset(, 2).Value
      'コードをテキストボックス4へ転送
    End If
    If wRange.Value = Me.ComboBox1.Value Then
      Me.TextBox5.Value = wRange.Offset(, -4).Value & _
      wRange.Offset(, -3).Value & wRange.Offset(, -2).Value
      'コードをテキストボックス5へ転送
    End If
  Next wRange

End Sub

【7202】Re:
発言  つん E-MAIL  - 03/8/26(火) 13:37 -

引用なし
パスワード
   sibira さん:

コンボボックスに設定されているデータと、その表の関係はどうなってるのですか?
テキストボックス2〜5には一度に全て値が入るのかな?

それとsibiraさんのコードですが、
宣言の前に、代入式が来てるので、エラーになります。
変数の宣言は、すべて先頭に来る方がいいと思います。

【7203】Re:
お礼  sibira  - 03/8/26(火) 14:53 -

引用なし
パスワード
   ▼つん さん:
>コンボボックスに設定されているデータと、その表の関係はどうなってるのですか?
>テキストボックス2〜5には一度に全て値が入るのかな?

はいそうです。
コンボボックスのリストを選択すると、必要データがテキストボックスに一気に入力されます。説明不足ですみません。

>それとsibiraさんのコードですが、
>宣言の前に、代入式が来てるので、エラーになります。
>変数の宣言は、すべて先頭に来る方がいいと思います。

そうなんですか。。。それもよくわかっていませんでした。
でも、こつこつ手直しをしていたら、できちゃいました。
ありがとうございました。

Jakaさんもありがとうございました。

【7205】Re:
発言  Jaka  - 03/8/26(火) 15:39 -

引用なし
パスワード
   多分これが原因?

ComboBoxの1番上のindex、-1の所はテキスト形式になっている見たいですので、たとえ数字が入っていてもセルに記入されているセルの値とは別扱いになる様です。
で、テキストに入っている数字をセルと同じ様に扱うには、Cint、val等などで数字に変換するか、数字宣言した変数に入れる必要があります。
うまく説明できませんが...。

B1:B5に1,2,3,4,5といれ、下記コードを試して見ると良く解ると思います。

Private Sub UserForm_Initialize()
  ComboBox1.List = Range("B1:B5").Value
End Sub

Private Sub CommandButton1_Click()
  Dim 変数Log As Long, 変数val As Variant
  If ComboBox1.List(ComboBox1.ListIndex) = Range("A1").Value Then
    MsgBox "ComboBox1.ListとA1は、同じ"
  Else
    MsgBox "ComboBox1.ListとA1は、違う"
  End If
  変数Log = ComboBox1.Value
  変数val = ComboBox1.Value
  If ComboBox1.Value = Range("A1").Value Then
    MsgBox "ComboBox1.Value とA1は、同じ"
  Else
    MsgBox "ComboBox1.Value とA1は、違う"
  End If
  If 変数Log = Range("A1").Value Then
    MsgBox "変数Log.Value とA1は、同じ"
  Else
    MsgBox "変数Log.Value とA1は、違う"
  End If
  If 変数val = Range("A1").Value Then
    MsgBox "変数val.Value とA1は、同じ"
  Else
    MsgBox "変数val.Value とA1は、違う"
  End If
End Sub

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