[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『フォームコントロールでリスト作成』(ジョン)
開発タブの挿入から、フォームコントロールの中のコンボボックスで リストを作成し、このリストから選択したものをSheet1にフィルタをかけ、Sheet2に 表示できるようにしたいです。コードは以下です。
Sheets("Sheet1").Range("A1").CurrentRegion.ClearContents
Sheets("Sheet1").Select Range("A1").AutoFilter Field:=1, Criteria1:="abc" Range("A1").CurrentRegion.Copy Sheets("Sheet1").Range("A1")
それと不明な点が一つ。 コントロールの書式設定から、入力範囲を設定しましたがリンクする セルの意味がわかりません。 どうかご指導ください。
< 使用 Excel:Excel2007、使用 OS:Windows7 >
>>リンクする セルの意味がわかりません。
ドロップダウンで選択した結果は、その値ではなく、入力範囲の何番目の値か、そのインデックスが数値で返されますが その数値をセットするセルを指定します。ドロップダウンコントロールの裏側あたり(つまり見えない)を指定することが多いですね。
以下は、そのセルが設定されたとしての処理コード案です。 これを、ドロップダウンコントロールにマクロ登録してください。
Sub DoFilter() Dim idx As Variant Dim key As String
With ActiveSheet.DropDowns(Application.Caller) idx = Range(.LinkedCell) If IsEmpty(idx) Then MsgBox "まだ選択されていません" Else key = Range(.ListFillRange).Cells(idx) ActiveSheet.AutoFilterMode = False Range("A1").AutoFilter Field:=1, Criteria1:=key Sheets("Sheet2").UsedRange.ClearContents Range("A1").CurrentRegion.Copy Sheets("Sheet2").Range("A1") ActiveSheet.AutoFilterMode = False End If End With
End Sub
(β) 2015/08/23(日) 18:10
リンクするセルを設定しない方法もあります。 その場合、以下のようなコードで。
Sub DoFilter() Dim idx As Variant Dim key As String
With ActiveSheet.DropDowns(Application.Caller) idx = .Value If idx = 0 Then MsgBox "まだ選択されていません" Else key = Range(.ListFillRange).Cells(idx) ActiveSheet.AutoFilterMode = False Range("A1").AutoFilter Field:=1, Criteria1:=key Sheets("Sheet2").UsedRange.ClearContents Range("A1").CurrentRegion.Copy Sheets("Sheet2").Range("A1") ActiveSheet.AutoFilterMode = False End If End With
End Sub
(β) 2015/08/23(日) 18:25
コントロールの書式設定のリンクするセルの意味がわかりました。 ドロップダウンコントロールへのマクロも無事に出来ました。 βさん、有難うございました。 (ジョン) 2015/08/23(日) 22:26
βさん、8月にご教示いただいたものです。 かなり前のことで、申し訳ありません。
keyで選択された項目を、Sheets("Sheet2").Range("A1")にタイトルを入れ 本文の貼り付けをA5に変更したと思います。 再度、ご教示お願いいたします。
(ジョン) 2015/12/19(土) 12:07
keyをいう変数を、Sheets("Sheet2").Range("A1").Valueに入れる方法?
Range("A1").CurrentRegion.Copy Sheets("Sheet2").Range("A1")
のコピー先を変更する方法?
もらったコードを理解するようにしないと、いけないですねえ。
一行一行をみていって、不明な点を質問したらどうですか?
(γ) 2015/12/19(土) 12:35
γさんからの指摘に加えて
タイトル と 本文 とは、それぞれ何を指していますか?
(β) 2015/12/19(土) 13:01
フィルターにより、選択されたものを本文とし、Sheet2のA1に貼り付けていますが、 今回は本文をSheet2のA5に貼り付け、A1にタイトルを入れたいと思います。 タイトルは、Range("A1").AutoFilter Field:=1, Criteria1:="abc"のabc、つまりkeyを タイトルにしたのですが・・・
(ジョン) 2015/12/19(土) 17:34
γさんコメントにもあるように、抽出したデータ(本文)は
Range("A1").CurrentRegion.Copy Sheets("Sheet2").Range("A1")
このコードの、Sheets("Sheet2").Range("A1") が転記先です。 これを A5 にしたいということなら、どう変更するかはおわかりですね。
で、それとは別に、タイトル(key) を A1 に転記したいんですよね。 通常の転記コードはわかりますよね?
Sheets("Sheet2").Range("A1").Value = key
これを追加すればいいのですが?
(β) 2015/12/19(土) 18:25
βさん、Sheets("Sheet2").Range("A1").Value = key わかりました。 ありがとうございました。
(ジョン) 2015/12/19(土) 18:49
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.