過去ログ

                                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)が同じなら、
その列以外を隠したいのですが、
複数選択可にしているので値の取得方法がわかりません。
まだまだかけだしで申し訳ないですがアドバイスよろしくお願いします。
 ───────────────────────────────────────  ■題名 : 取得方法だけ・・・  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 03/2/28(金) 11:36  -------------------------------------------------------------------------
   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

複数選択のときって面倒やねんね・・・
もしかして、むっちゃはずした回答してる???
 ───────────────────────────────────────  ■題名 : Re:取得方法だけ・・・  ■名前 : KAKE  ■日付 : 03/2/28(金) 14:52  -------------------------------------------------------------------------
   ▼つん さん:
こんにちは。
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
>
 ───────────────────────────────────────  ■題名 : Re:取得方法だけ・・・  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 03/2/28(金) 17:44  -------------------------------------------------------------------------
   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
 ───────────────────────────────────────  ■題名 : Re:リストボックス  ■名前 : ポンタ  ■日付 : 03/2/28(金) 15:27  -------------------------------------------------------------------------
   こんな感じでいかがでしょう?

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
 ───────────────────────────────────────  ■題名 : Re:リストボックス  ■名前 : KAKE  ■日付 : 03/2/28(金) 16:34  -------------------------------------------------------------------------
   ▼ポンタ さん:
>こんな感じでいかがでしょう?
>
>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度,出なおしてきます。
 ───────────────────────────────────────  ■題名 : Re:リストボックス  ■名前 : ポンタ  ■日付 : 03/2/28(金) 18:29  -------------------------------------------------------------------------
   勘違いしてました。

以下のコードに差し替えてみてください。

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
 ───────────────────────────────────────  ■題名 : Re:リストボックス  ■名前 : KAKE  ■日付 : 03/3/3(月) 9:45  -------------------------------------------------------------------------
   ▼ポンタ さん
返信ありがとうございます。
お手数をおかけました。
思っていた通りに出来ました。
本当にありがとうございます。


>勘違いしてました。
>
>以下のコードに差し替えてみてください。
>
>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
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 818