Excel VBA質問箱 IV

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

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


3464 / 13645 ツリー ←次へ | 前へ→

【62064】コンボボックスのリスト(Sheet)選択について Sunday 09/6/19(金) 11:58 質問[未読]
【62065】Re:コンボボックスのリスト(Sheet)選択につ... Jaka 09/6/19(金) 12:50 発言[未読]
【62067】Re:コンボボックスのリスト(Sheet)選択につ... Sunday 09/6/19(金) 13:16 質問[未読]
【62069】Re:コンボボックスのリスト(Sheet)選択につ... Jaka 09/6/19(金) 14:32 発言[未読]
【62071】Re:コンボボックスのリスト(Sheet)選択につ... Sunday 09/6/19(金) 14:50 お礼[未読]
【62066】Re:コンボボックスのリスト(Sheet)選択につ... neptune 09/6/19(金) 13:11 発言[未読]
【62068】Re:コンボボックスのリスト(Sheet)選択につ... Sunday 09/6/19(金) 13:23 お礼[未読]

【62064】コンボボックスのリスト(Sheet)選択につ...
質問  Sunday  - 09/6/19(金) 11:58 -

引用なし
パスワード
   宜しくお願いします。

過去の投稿からコンボボックスのリスト選択について参照し
下記の様に作成してみました。

リストの選択範囲と選択結果のTextBoxへの表示は上手くいきました。
ワークシート名は今後変更されたりする可能性が有りますので、
Sheet名で記述したく、

Call Sheet2 等

ですが、上手くいきませんでした。お手数お掛けしますが
宜しくご教授御願い致します。

Private Sub UserForm_Initialize()

  Dim lRow As Long
  With Worksheets("社員一覧")
    lRow = .Range("A" & Rows.Count).End(xlUp).Row
  End With

  With ComboBox1
    .RowSource = "社員一覧!A2:A" & lRow
'    .Style = fmStyleDropDownCombo
'    .MatchRequired = True
'    .MatchEntry = fmMatchEntryFirstLetter
    .IMEMode = fmIMEModeOff
    .TabIndex = 0
  End With

End Sub



【62065】Re:コンボボックスのリスト(Sheet)選択に...
発言  Jaka  - 09/6/19(金) 12:50 -

引用なし
パスワード
   ▼Sunday さん:
>ワークシート名は今後変更されたりする可能性が有りますので、
>Sheet名で記述したく、
>
>Call Sheet2 等
なにをどう知りたいのか良く解りませんが、
シートのコード名を直接使うのは、控えた方が良いのでは...。
素直に文字で
Call aaaa("Sheet2")
とした方が良いと思いますけどね。

【62066】Re:コンボボックスのリスト(Sheet)選択に...
発言  neptune  - 09/6/19(金) 13:11 -

引用なし
パスワード
   ▼Sunday さん:
私も良く判りませんが、
定数が変更される場合は↓のように書いておくのが定石と思いますよ。

private const csName as string="社員一覧"

>Private Sub UserForm_Initialize()
>
>  Dim lRow As Long
  With Worksheets(csName)

こうしておくと、変更になってもcsName の定義を変更するだけでよい。

【62067】Re:コンボボックスのリスト(Sheet)選択に...
質問  Sunday  - 09/6/19(金) 13:16 -

引用なし
パスワード
   ▼Jaka さん

こんにちは。
ありがとうございます。

現在、Sheet2("社員一覧")で、Aのセルが("社員ID")です。
シート名(タグ)が変更されてしまうと使えなくなってしまうので
それを避けるために下記の様に直したかったんですが、

With Worksheets("社員一覧")のままで使用した方が良いでしょうか?
宜しくお願い致します。

>Private Sub UserForm_Initialize()
>
>  Dim lRow As Long

  Dim Ws2 As Worksheet
  Set Ws2 = Sheet2

>  With Worksheets("社員一覧")

  With Ws2

>    lRow = .Range("A" & Rows.Count).End(xlUp).Row
>  End With
>
>  With ComboBox1
>    .RowSource = "社員一覧!A2:A" & lRow

ここがダメでした。
   ↓
   →.RowSource = Ws2.Racge("A2:A" & lRow)
  
>'    .Style = fmStyleDropDownCombo
>'    .MatchRequired = True
>'    .MatchEntry = fmMatchEntryFirstLetter
>    .IMEMode = fmIMEModeOff
>    .TabIndex = 0
>  End With
>
>End Sub
>

【62068】Re:コンボボックスのリスト(Sheet)選択に...
お礼  Sunday  - 09/6/19(金) 13:23 -

引用なし
パスワード
   ▼neptune さん

こんにちは。ありがとうございます。

>定数が変更される場合は↓のように書いておくのが定石と思いますよ。

やはりそうなんですね。

>private const csName as string="社員一覧"

>>Private Sub UserForm_Initialize()
>>
>>  Dim lRow As Long
>  With Worksheets(csName)
>
>こうしておくと、変更になってもcsName の定義を変更するだけでよい。

修正箇所一か所で済みますので、がこうしてみるのも良さそうですね。
ありがとうございます。

【62069】Re:コンボボックスのリスト(Sheet)選択に...
発言  Jaka  - 09/6/19(金) 14:32 -

引用なし
パスワード
   ▼Sunday さん:
>現在、Sheet2("社員一覧")で、Aのセルが("社員ID")です。
>シート名(タグ)が変更されてしまうと使えなくなってしまうので
>それを避けるために下記の様に直したかったんですが、
そういうことでしたか。


>>  With ComboBox1
>>    .RowSource = "社員一覧!A2:A" & lRow
               ↑
            ここは文字ですよね。

>ここがダメでした。
>   ↓
>   →.RowSource = Ws2.Racge("A2:A" & lRow)
              ↑
           なぜここは文字にしないのでしょうか?
           Ws2.name & "!A2:A" & lRow

【62071】Re:コンボボックスのリスト(Sheet)選択に...
お礼  Sunday  - 09/6/19(金) 14:50 -

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

こんにちは。

>           なぜここは文字にしないのでしょうか?
>           Ws2.name & "!A2:A" & lRow

勉強不足です。;;>

↓で上手くいきました。ありがとうございました。
_______________________
Private Sub UserForm_Initialize()
  Dim lRow As Long
  Dim Ws2 As Worksheet
  Set Ws2 = Sheet2
  With Ws2
    lRow = .Range("A" & Rows.Count).End(xlUp).Row
  End With
  With ComboBox1
    .RowSource = Ws2.Name & "!A2:A" & lRow
    .Style = fmStyleDropDownCombo
    .MatchRequired = True
    .MatchEntry = fmMatchEntryFirstLetter
    .IMEMode = fmIMEModeOff
    .TabIndex = 0
  End With
End Sub

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