エクセルのVBAに関する質問です。オートフィルタでつくられるプルダウンの一覧のうち、セルに記述されている部分(重複を除いたもの)を配列として取り込むことは可能なのでしょうか? プルダウンでは、上から、すべて、オプション、トップテンなどとでてきますが、この部分を除いた下のほうの一覧です。無理ならば、オートフィルタと同じように、重複を除いた一覧を簡単に取得することは可能なのでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2009/08/09 21:45:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:SALINGER No.1

回答回数3454ベストアンサー獲得回数969

ポイント60pt

簡単とまでは行きませんが、特定のセル範囲を重複無しで配列に格納するマクロです。

Sub Macro()
    Dim r As Range
    Dim i As Long
    Dim myData() As String
    Dim f As Boolean
    
    ReDim myData(0)
    
    For Each r In Selection
        If myData(0) = "" Then
            myData(0) = r.Value
        Else
            f = False
            For i = 0 To UBound(myData)
                If myData(i) = r.Value Then
                    f = True
                    Exit For
                End If
            Next
            If Not f Then
                ReDim Preserve myData(UBound(myData) + 1)
                myData(UBound(myData)) = r.Value
            End If
        End If
    Next
End Sub

ここでは選択した範囲を配列myDataに入れています。

プルダウンのリストとなる範囲が決まっている場合は、

一箇所あるselectionを特定のRangeに置き換えればいいです。

http://q.hatena.ne.jp/

id:kaiketsu

ありがとうございます。ただ、うーん、簡単ではないんですね。オートフィルタの一覧を横取りするようなことができるといいのですが、

2009/08/02 22:54:14
  • id:SALINGER
    調べていないので雑感ですが、オートフィルタから直接リストを取得するのは無理のような気がします。
    VBAはあまり親切な機能って無いですから。
    複雑な問題は有る機能をうまく使って実現することが多いです。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません