Excel VBA質問箱 IV

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

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


3618 / 13646 ツリー ←次へ | 前へ→

【61120】ドロップダウン おばさん 09/4/10(金) 11:54 質問[未読]
【61122】Re:ドロップダウン kanabun 09/4/10(金) 12:12 発言[未読]
【61125】Re:ドロップダウン おばさん 09/4/10(金) 13:19 質問[未読]
【61134】Re:ドロップダウン kanabun 09/4/10(金) 19:34 発言[未読]
【61143】Re:ドロップダウン おばさん 09/4/11(土) 10:51 お礼[未読]
【61127】Re:ドロップダウン Jaka 09/4/10(金) 13:26 発言[未読]
【61131】Re:ドロップダウン おばさん 09/4/10(金) 16:24 お礼[未読]

【61120】ドロップダウン
質問  おばさん  - 09/4/10(金) 11:54 -

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

初心者なので、ネットで検索しながら作りました。
UserFoamを作り ComboBoxのDropDownを
させたいのですが、上手くいきません。
Range("A:J")でUserForm1.Showにして

   ElseIf Not Intersect(Target, Range("D:D")) Is Nothing Then
         UserForm1.Show
         UserForm1.ComboBox3.DropDown

Range("D:D")で DropDownしたいのですが、DropDownしません。
どこがおかしいのでしょうか?
宜しくお願い致します。


Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    If Not Intersect(Target, Range("A:A")) Is Nothing Then
     If Not Intersect(Target, Range("A:J")) Is Nothing Then
         UserForm1.Show
         UserForm1.ComboBox1.DropDown
   ElseIf Not Intersect(Target, Range("D:D")) Is Nothing Then
         UserForm1.Show
         UserForm1.ComboBox3.DropDown
    End If
   End If
 End If
End Sub

【61122】Re:ドロップダウン
発言  kanabun  - 09/4/10(金) 12:12 -

引用なし
パスワード
   ▼おばさん さん:
こんにちは。

>UserFoamを作り ComboBoxのDropDownを
>させたいのですが、上手くいきません。
>Range("A:J")でUserForm1.Showにして
>
>   ElseIf Not Intersect(Target, Range("D:D")) Is Nothing Then
>         UserForm1.Show
>         UserForm1.ComboBox3.DropDown
>
>Range("D:D")で DropDownしたいのですが、DropDownしません。
>どこがおかしいのでしょうか?

たぶんですが、
>         UserForm1.Show
で、UserFormをモードレス表示しているので、UserFormが閉じられるまで
>         UserForm1.ComboBox3.DropDown
のコード行の実行は「待ち」状態になっています。

UserFormを表示して、すぐドロップダウンなどUserForm内の処理をしたいときは
>         UserForm1.Show
でなく、
         UserForm1.Show 0
としてください。

【61125】Re:ドロップダウン
質問  おばさん  - 09/4/10(金) 13:19 -

引用なし
パスワード
   kanabunさん 有り難うございます。

以下のようにして見ましたが、
Range("D:D")の所では、DropDownしません。
他に何か原因あるでしょうか?
宜しくお願い致します。

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    If Not Intersect(Target, Range("A:A")) Is Nothing Then
     If Not Intersect(Target, Range("A:J")) Is Nothing Then
         UserForm1.Show 0
         UserForm1.ComboBox1.DropDown
   ElseIf Not Intersect(Target, Range("D:D")) Is Nothing Then
         UserForm1.ShowShow 0
         UserForm1.ComboBox3.DropDown
    End If
   End If
 End If
End Sub

【61127】Re:ドロップダウン
発言  Jaka  - 09/4/10(金) 13:26 -

引用なし
パスワード
   見本

Private Sub UserForm_Activate()
ComboBox1.DropDown
'ComboBox3.DropDown 'どちらかか1つだけ。
DoEvents
End Sub

Private Sub UserForm_Initialize()
ComboBox1.List = Array(1, 2, 3, 4, 5)
ComboBox3.List = Array("A", "B", "C", "D", "E")
End Sub

【61131】Re:ドロップダウン
お礼  おばさん  - 09/4/10(金) 16:24 -

引用なし
パスワード
   Jakaさん 有り難うございました。

【61134】Re:ドロップダウン
発言  kanabun  - 09/4/10(金) 19:34 -

引用なし
パスワード
   ▼おばさん さん:

>以下のようにして見ましたが、
>Range("D:D")の所では、DropDownしません。
>他に何か原因あるでしょうか?

>Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
>    If Not Intersect(Target, Range("A:A")) Is Nothing Then
>     If Not Intersect(Target, Range("A:J")) Is Nothing Then
>         UserForm1.Show 0
>         UserForm1.ComboBox1.DropDown
>   ElseIf Not Intersect(Target, Range("D:D")) Is Nothing Then
>         UserForm1.ShowShow 0
>         UserForm1.ComboBox3.DropDown
>    End If
>   End If
> End If
>End Sub

このプロシージャって、End Ifが不必要に多く、構文エラーになってませんか?
インデントをきちんとつけて、
Ifに対応する End Ifが どのEnd If文 なのかを一目見て分かるようにしておく
ことをお勧めします。
で、
おやりになりたいことは日本語でいうとどういうことになりますか?
仮に、
 カーソルが A列に移動したら、ComboBox1をドロップダウンさせる。
 カーソルが D列に移動したら、ComboBox3 をドロップダウンさせる。
という2つの分岐なら、

>     If Not Intersect(Target, Range("A:J")) Is Nothing Then

は不要で、

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _
                     ByVal Target As Range)
  If Not Intersect(Target, Range("A:A")) Is Nothing Then
     'If Not Intersect(Target, Range("A:J")) Is Nothing Then
       UserForm1.Show 0
       UserForm1.ComboBox1.DropDown
  ElseIf Not Intersect(Target, Range("D:D")) Is Nothing Then
       UserForm1.Show 0
       UserForm1.ComboBox3.DropDown
  End If
  'End If
  'End If
End Sub

と記述するだけで、
Selectionが A列に移ったときには ComboBox1.dropDownメソッドが働き、
Selectionが D列に移ったときには ComboBox3がdropDownされると思いますが?

【61143】Re:ドロップダウン
お礼  おばさん  - 09/4/11(土) 10:51 -

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

>構文エラーになってませんか?
エラーになり、参考書等調べても
わからず、悩んでいました。

基礎が出来ていないため
何が原因かわかりませんでした。

本当に勉強になりました。
有り難うございました。

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