Home > Excel VBA Macro 値の操作 > FAQ

オートフィルターで抽出した氏名を自動的に宛名にするには?

Question 5314 拙著「Excel VBA そのまま使える実用マクロ 500連発」 Previous Next
詳細は こちら サンプルNo.237 ◆ 環境・・ Excel 2007 & Windows 7

「オートフィルタで抽出したデータの最上行の値を取得する」 を参考にさせていただき、
下記のものをつくろうと考えているのですが、
お助けください。

  A列    B列
1 ○○    様
2 氏名
(オートフィルタ)
3 ××1
4 ××2
とあったときフィルタを実行↓
  A列    B列
1 ××1   様
2 氏名
3 ××1
(A3)××1のみをフィルタで選択すると、自動的にA1セルに××1が表示されるようにしたいのですが、うまくできなくて、よろしくお願いします。
Answer   Copyright (C) 2011.7.18 永井善王
拙著 「Excel VBA そのまま使える実用マクロ 500連発」 を お求めいただき、ありがとうございます。
237番に着目されたのは、希望する宛名をワンタッチで作りたいからでしょうね。
最初に確認させていただきますが、A2セルに
(オートフィルタ) とあるのは、オートフィルターのドロップダウン矢印がここにあるという意味でしょうか。
もしそうならば、ご提示のレイアウトでは、あり得ないと思います。矢印は A1セルとB1セルに付くはずです。

とりあえず、237番のマクロの修正案をご提示します。
Sub オートフィルタで抽出したデータの最上行の値を取得する_改造版()
    ActiveSheet.Range("A1").AutoFilter field:=1, Criteria1:="××1"
    With ActiveSheet.UsedRange
        On Error Resume Next
        値1 = .Resize(.Rows.Count - 1).Offset(1) _
            .SpecialCells(xlCellTypeVisible).Cells(1).Value
        Range("A1").Value = 値1
        On Error GoTo 0
    End With
End Sub
これで、A1セルに××1が表示されるはずですから、回答は一応終わりになります。
が、このマクロをどのように起動するのかが気がかりです。おそらく、腹案をお持ちでしょうから頑張って仕上げてください。

 

Excel VBA Macro

Excel DownLoad