[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『既存マクロ変更のやり方』(らら)
大変申し訳ないのですが
以前会社にいた人が
作って頂いたものですが
仕様変更で 改造を依頼したいと思って
相談させていただきます
下記のマクロはB列 コンボボックス1 C列コンボボックス2で
フィルターかけてくれてますが
これをA列 B列 対応に改造して頂ける方
いらっしゃいますか
お願いいたします
Private Sub CommandButton1_Click()
Dim a, i As Long, ii As Long Set dic = CreateObject("Scripting.Dictionary") dic.CompareMode = 1 a = Sheets("aaa").Cells(1).CurrentRegion.Offset(, 1).Resize(, 3).Value For i = 2 To UBound(a, 1) For ii = 1 To UBound(a, 2) a(i, ii) = CStr(a(i, ii)) Next If Not dic.Exists(a(i, 1)) Then Set dic(a(i, 1)) = CreateObject("Scripting.Dictionary") dic(a(i, 1)).CompareMode = 1 End If If Not dic(a(i, 1)).Exists(a(i, 2)) Then Set dic(a(i, 1))(a(i, 2)) = CreateObject("Scripting.Dictionary") dic(a(i, 1))(a(i, 2)).CompareMode = 1 End If
Next Me.ComboBox1.List = dic.Keys
Application.ScreenUpdating = True Worksheets("aaa").Select
End Sub
Private Sub ComboBox1_Click() Dim W As Worksheet For Each W In Worksheets If W.AutoFilterMode Then W.AutoFilterMode = False Next W With Me .ComboBox2.Clear
If .ComboBox1.ListIndex > -1 Then .ComboBox2.List = dic(.ComboBox1.Value).Keys End With End Sub
Private Sub ComboBox2_Change() On Error Resume Next Dim i As Long If Me.ComboBox2.ListIndex <> -1 Then With Sheets("aaa").Cells(1).CurrentRegion .Parent.AutoFilterMode = False For i = 1 To 2 .AutoFilter i + 1, Me.Controls("ComboBox" & i).Value Next End With End If
Dim frng As Range Set frng = Worksheets("aaa").AutoFilter.Range Set frng = frng.Offset(1).Resize(frng.Rows.Count - 1) With frng.Columns("B:B")
End With
End Sub
< 使用 Excel:Excel2013、使用 OS:Windows10 >
>a = Sheets("aaa").Cells(1).CurrentRegion.Offset(, 1).Resize(, 3).Value ↓ a = Sheets("aaa").Cells(1).CurrentRegion.Resize(, 3).Value
>.AutoFilter i + 1, Me.Controls("ComboBox" & i).Value ↓ .AutoFilter i, Me.Controls("ComboBox" & i).Value
(マナ) 2017/05/28(日) 22:54
本当に助かりました
(らら) 2017/05/28(日) 23:35
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.