Page 818 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼リストボックス KAKE 03/2/26(水) 17:23 ┣取得方法だけ・・・ つん 03/2/28(金) 11:36 ┃ ┗Re:取得方法だけ・・・ KAKE 03/2/28(金) 14:52 ┃ ┗Re:取得方法だけ・・・ つん 03/2/28(金) 17:44 ┗Re:リストボックス ポンタ 03/2/28(金) 15:27 ┗Re:リストボックス KAKE 03/2/28(金) 16:34 ┗Re:リストボックス ポンタ 03/2/28(金) 18:29 ┗Re:リストボックス KAKE 03/3/3(月) 9:45 ─────────────────────────────────────── ■題名 : リストボックス ■名前 : KAKE ■日付 : 03/2/26(水) 17:23 -------------------------------------------------------------------------
リストボックスの値と セルの値(range("e10"),Range("IV10").End(xlToLeft).Column)が同じなら、 その列以外を隠したいのですが、 複数選択可にしているので値の取得方法がわかりません。 まだまだかけだしで申し訳ないですがアドバイスよろしくお願いします。 |
KAKE さん、こんにちは >リストボックスの値と >セルの値(range("e10"),Range("IV10").End(xlToLeft).Column)が同じなら、 >その列以外を隠したいのですが、 >複数選択可にしているので値の取得方法がわかりません。 >まだまだかけだしで申し訳ないですがアドバイスよろしくお願いします。 とりあえず、取得方法だけですが、こんな風にやるみたいです。 私も初めてやってみた・・・ Private Sub UserForm_Initialize() With ListBox1 .RowSource = "A1:A4" .MultiSelect = fmMultiSelectExtended End With End Sub Private Sub CommandButton1_Click() Dim i As Long Dim str As String With ListBox1 For i = 0 To .ListCount - 1 If .Selected(i) = True Then str = str & " " & .List(i) End If Next i End With MsgBox "選択されている項目は" & str & " です" End Sub 複数選択のときって面倒やねんね・・・ もしかして、むっちゃはずした回答してる??? |
▼つん さん: こんにちは。 Sampleを参考に作ってみましたが、今の私の理解力ではここまでしか 出来ません。 Dim myrng As Long, n As Integer Dim i As Integer, HAKO myrng = Range("iv10").End(xlToLeft).Column With ListBox1 For n = 5 To myrng For i = 0 To .ListCount - 1 If .Selected(i) = True And Cells(10, n) = .Selected(i) Then HAKO = HAKO & Columns(n) End If Next i Next n End With HAKO.hidden = True 'HAKO以外を隠したいのですが・・・ End Sub >Private Sub UserForm_Initialize() > > With ListBox1 > .RowSource = "A1:A4" > .MultiSelect = fmMultiSelectExtended > End With > >End Sub > > >Private Sub CommandButton1_Click() > > Dim i As Long > Dim str As String > > With ListBox1 > For i = 0 To .ListCount - 1 > If .Selected(i) = True Then > str = str & " " & .List(i) > End If > Next i > End With > > MsgBox "選択されている項目は" & str & " です" > >End Sub > |
KAKE さん えっと、リストボックスから1つ以上(複数あり)値を選んで、 Range(Range("e10"), Range("IV10").End(xlToLeft))の範囲で、 その値とマッチするデータを選んで、それ以外の列を隠す。 つまり、ヒットしたデータの列だけ表示されている状態にしたいんですよね・・・ とりあえず、頑張ってみたんですけど、データを検索するところまでしか出来ませんでした。 それ以外を隠す・・のを試行錯誤してる間に、タイムアップです(>_<) 参考までに、できてるところまでアップしときますね。 もういらないかもしれんけど・・・ ポンタさんいてはるし・・・ Private Sub CommandButton1_Click() Dim i As Long Dim rTarget As Range Dim Rng As Range Dim Rng2 As Range Dim strAddress As String Set rTarget = ThisWorkbook.Worksheets("Sheet1").Range(Range("e10"), Range("IV10").End(xlToLeft)) With ListBox1 For i = 0 To .ListCount - 1 If .Selected(i) = True Then Set Rng = rTarget.Find(.List(i), , xlValues, xlWhole) If Not Rng Is Nothing Then strAddress = Rng.Address If Rng2 Is Nothing Then Set Rng2 = Rng End If Do Set Rng = rTarget.FindNext(Rng) Set Rng2 = Application.Union(Rng2, Rng) Loop While Rng.Address <> strAddress End If End If Next i End With MsgBox Rng2.Address Set Rng = Nothing Set Rng2 = Nothing Set rTarget = Nothing End Sub |
こんな感じでいかがでしょう? Private Sub CommandButton1_Click() Dim i As Integer Dim MyRange As Range, MyTarget As Range Set MyTarget = Range(Range("e10"), Range("IV10").End(xlToLeft)) Application.ScreenUpdating = False For i = 0 To ListBox1.ListCount - 1 If ListBox1.Selected(i) Then Set MyRange = MyTarget.Find(ListBox1.List(i), , xlValues, xlWhole) If Not MyRange Is Nothing Then MyRange.EntireColumn.Hidden = True End If End If Next Application.ScreenUpdating = True End Sub |
▼ポンタ さん: >こんな感じでいかがでしょう? > >Private Sub CommandButton1_Click() > Dim i As Integer > Dim MyRange As Range, MyTarget As Range > Set MyTarget = Range(Range("e10"), Range("IV10").End(xlToLeft)) > Application.ScreenUpdating = False > For i = 0 To ListBox1.ListCount - 1 > If ListBox1.Selected(i) Then > Set MyRange = MyTarget.Find(ListBox1.List(i), , xlValues, xlWhole) > If Not MyRange Is Nothing Then > MyRange.EntireColumn.Hidden = True > End If > End If > Next > Application.ScreenUpdating = True >End Sub 返信ありがとうございます。 Powerdownぎみだったので。 実行してみると,隠れるのですが MyTargetのListは、範囲の中で繰り返し出てくるので 1度で隠れずに、ボタンを押すたびに隠れてくれます。 多分,RowSourceで指定していないのが原因だと思います。 すみません。Arrayで指定してました。 もう1度,出なおしてきます。 |
勘違いしてました。 以下のコードに差し替えてみてください。 Private Sub CommandButton1_Click() Dim i As Integer Dim strAddress As String Dim MyRange As Range, MyTarget As Range, MyFind As Range Cells.EntireColumn.Hidden = False Set MyTarget = Range(Range("E10"), Range("IV10").End(xlToLeft)) For i = 0 To ListBox1.ListCount - 1 If ListBox1.Selected(i) Then Set MyFind = MyTarget.Find(ListBox1.List(i), , xlValues, xlWhole) If Not MyFind Is Nothing Then If MyRange Is Nothing Then Set MyRange = MyFind Else Set MyRange = Union(MyRange, MyFind) End If strAddress = MyFind.Address Do Set MyFind = MyTarget.FindNext(MyFind) If MyFind Is Nothing Then Exit Do Else Set MyRange = Union(MyRange, MyFind) End If Loop While MyFind.Address <> strAddress End If End If Next MyTarget.EntireColumn.Hidden = True If Not MyRange Is Nothing Then MyRange.EntireColumn.Hidden = False End If End Sub |
▼ポンタ さん 返信ありがとうございます。 お手数をおかけました。 思っていた通りに出来ました。 本当にありがとうございます。 >勘違いしてました。 > >以下のコードに差し替えてみてください。 > >Private Sub CommandButton1_Click() > Dim i As Integer > Dim strAddress As String > Dim MyRange As Range, MyTarget As Range, MyFind As Range > Cells.EntireColumn.Hidden = False > Set MyTarget = Range(Range("E10"), Range("IV10").End(xlToLeft)) > For i = 0 To ListBox1.ListCount - 1 > If ListBox1.Selected(i) Then > Set MyFind = MyTarget.Find(ListBox1.List(i), , xlValues, xlWhole) > If Not MyFind Is Nothing Then > If MyRange Is Nothing Then > Set MyRange = MyFind > Else > Set MyRange = Union(MyRange, MyFind) > End If > strAddress = MyFind.Address > Do > Set MyFind = MyTarget.FindNext(MyFind) > If MyFind Is Nothing Then > Exit Do > Else > Set MyRange = Union(MyRange, MyFind) > End If > Loop While MyFind.Address <> strAddress > End If > End If > Next > MyTarget.EntireColumn.Hidden = True > If Not MyRange Is Nothing Then > MyRange.EntireColumn.Hidden = False > End If >End Sub |