|
▼ひいろ さん:
>>無条件で
>>> UserForm1.Show(vbModeless)
>>と表示しているからですよね
>
>すみません。勉強不足で…
>ここを変えればいいのでしょうか?
そこは、文字通り、ユーザーフォームを表示しているところですから
何も変更する必要はありません。
▼
>5,6については4をコピーしてそれぞれ5,6に数字だけ変えたのですが
>やっぱりユーザーフォームしか出てこず,肝心な中身が表示されません。
いま dspName の記述を推定しなが記述しなおすと、
以下のようです。
変数 r は 指定列 retu の3行目から最終データ行までのセル範囲です。
この範囲は Do〜Loopしなくても求まりますから、この範囲を 変数rに
代入して
For Each c In r
処理
Next
のように、列ごとにLoopし 列別の処理をします。
●「retu」 が (1)(2)(4)のCaseについては すでに書いてあります。
★「retu」 が (5)と(6)についても、同様に 処理を書いてください。
Sub dspName(retu As Integer)
Dim WS As Worksheet
Dim temp1 As String
Dim r As Range
Dim c As Range
UserForm1.Show vbModeless
UserForm1.IstChoice.Clear
Set WS = Worksheets("職員情報")
With WS
Set r = .Range(.Cells(3, retu), .Cells(3, retu).End(xlDown))
End With
Select Case retu
Case 1 '--------------- 上と比較 ●
For Each c In r
If c.Value <> c.Offset(-1).Value Then
UserForm1.IstChoice.AddItem c.Value
End If
Next
Case 2 '--------------- 横と比較 ●
For Each c In r
If c(1, -1).Value = c(1, 0) Then
UserForm1.IstChoice.AddItem c.Value
End If
Next
Case 4 ' --------------- 固定セルと比較 ●
temp1 = WS.Cells(8, 5).Value
For Each c In r
If c(1, 0).Value = temp1 Then
UserForm1.IstChoice.AddItem c.Value
End If
Next
Case 5
For Each c In r
'--- ここにパラメータが 5 のときの処理を書く ★
Next
Case 6
For Each c In r
'--- ここにパラメータが 6 のときの処理を書く ★
Next
End Select
End Sub
なお、
> UserForm1.IstChoice
というのは ListBoxコントロールのことで、ほんとうは
lstChoice が正しいのではないかと想像するのですが、
以下では原文のまま (lstChoiceでなく)IstChoice としてあります。
こういうタイプミスは
各モジュール(標準モジュールとか UserFormモジュール)の一番最初
に
Option Explicit
と宣言を入れておくことにより、コードの中で
lstChoice を IstChoice とタイプしたり、
変数temp1 を tmp1として使用したりすると
「変数が宣言されていません」と
警告が出るので、すぐタイプミスに気がつくようになります。
必ず
Option Explicit
を宣言してからコードを各習慣をつけるようにしてください。
また、掲示板に質問用に出すコードは インデントをきちんとつけた
コードを提示するようにしてください。インデントの付いてないコード
や、実際のコードをコピペしたものでないコードは
それだけで回答が付きにくくなります。
|
|