Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10全般 : Excel 2016)
マクロへセルの値を代入する方法
投稿日時: 21/06/06 10:34:33
投稿者: チワワのゾロ

こちら初心者です。宜しくお願い致します。
一つのシートに依頼された仕事のリストがあります。
リストの中には作業する担当者も入っています。
 
  A    B  C  D  E
1 作業   担当 開始 確認 終了
2 雑巾がけ 鈴木 5/30 6/1 6/2
3 窓ふき  山田 5/29 6/1 6/3
4 掃き掃除 鈴木 5/30 6/2 6/3
5 洗濯   吉田 5/29 6/2 6/5
6 ごみ捨て 吉田 5/28 6/1 6/2
・・・・以下省略
 
 マクロで鈴木、山田、吉田のリストを作ろうと思っています。
マクロの記録を使って1行目で鈴木にフィルターをかけて結果を他のシートに貼り付けたいと思っています。
 
山田、吉田の分もマクロを作ればよいのですが
マクロ実行のボタンをいくつも作りたくはないのです。
 
ActiveSheet.Range("$A$1:$V$100").AutoFilter Field:=8, Criteria1:="鈴木"
という構文があるとします。
 
あるシートにマクロ実行ボタンを一つだけ作成しその横のセルにリストで担当者を選択できるセルを要ししておき、そのセルの内容を上記構文の"鈴木"の部分に代入
できれば便利かなと思っています。
このようなことは出来ますでしょうか?
 
初心者のため、分かりづらい内容で申し訳ありません。ご教授願います。

回答
投稿日時: 21/06/06 14:12:34
投稿者: simple

色々な方法があると思います。
 
ご自分だけが使うのであれば、
目標とする担当者をアクティブセルにしておいてから、
マクロを起動するといった方法が考えられますね。
ActiveSheet.Range("$A$1:$V$100").AutoFilter Field:=8, Criteria1:=Selection.Value
 
他のユーザーも使うのであれば、
Application.InputBoxメソッド(Type:=8)を使って、
明示的に、対象とする担当者のあるセルを指定させることもできますね。
このほうがユーザーが間違いにくいですかね。
https://www.moug.net/tech/exvba/0150066.html
を参考にしてください。

回答
投稿日時: 21/06/06 14:24:55
投稿者: もこな2

チワワのゾロ さんの引用:
あるシートにマクロ実行ボタンを一つだけ作成しその横のセルにリストで担当者を選択できるセルを要ししておき、そのセルの内容を上記構文の"鈴木"の部分に代入
できれば便利かなと思っています。
このようなことは出来ますでしょうか?

そこまで思いついてるならとりあえずトライしてみてはどうですか?
Sub さんぷる()
    With Worksheets("リスト")
        .Range("$A$1:$V$100").AutoFilter Field:=8, Criteria1:=Worksheets("あるシート").Range("B1").Value
    End With
End Sub

 
チワワのゾロ さんの引用:
担当者を選択できるセルを要ししておき
↑は、入力規則をつかうとよいと思います。

回答
投稿日時: 21/06/06 15:23:10
投稿者: WinArrow
投稿者のウェブサイトに移動

いろいろな方法gあります・・・・1つの方法
 
例えば、担当者別のシートが事前に用意できるとして・・・シート名を担当者名とする。
 
担当者シートの任意のセルをダブルクリックし、
仕事のシートから、当該担当者を抽出して、複写する。
なんて方法もあります。
担当者名を変数に入れておけば、
フィルタの引数に与えることができするし、複写先のシート名にもなります。

回答
投稿日時: 21/06/06 21:04:12
投稿者: simple

失礼しました。
質問を最後までよく読んでいませんでした。
もこな2さんのご指摘のとおりですね。
 
もっといえば、入力規則(リスト)の対象とする担当者一覧を別途作成しておけば、
それを使うことで、別シートへの転記の繰り返し処理も
すべて実行してしまうことができるでしょうね。

投稿日時: 21/06/07 09:31:47
投稿者: チワワのゾロ

皆様有り難うございました。
教えて頂いたものを実践させて頂きます。
また何か有りましたら宜しくお願い致します。