質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

1321閲覧

VBAでフィルターのような機能

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/10/20 02:01

編集2020/10/21 01:46

前提・実現したいこと

Excelのフィルター機能をコマンドボタンで行いたいのです
最低条件
・コマンドボタンを押したら色が変わるようにしてほしい
・もう一度押したら元の色に戻る
・コマンドボタンを押した数だけ項目が増えて表示されるようにしてほしい(フィルター機能でいうとチェックした項目分表示される状態)

:フィルター機能選択項目
実際)入店時間、実際)退店時間、予定)入店時間等項目があり

発生している問題・エラーメッセージ

ボタンの色は変えれたがIf CommandButton1 = True Thenでは何の反応もないことです。

該当のソースコード

VBA

1Private Sub CommandButton1_Click() 2 If CommandButton1 = click Then 3 CommandButton1.BackColor = RGB(200, 100, 125) 4 Else 5 CommandButton1.BackColor = RGB(238, 236, 225) 6 End If 7End Sub 8

試したこと

ほかにも調べたのですがaccessのフォームの方のやり方しか出てきません

補足情報(FW/ツールのバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mattuwan

2020/10/20 08:09

「プルダウン」のイメージがこちらと違うようです。 別の平易な言葉でやりたいことを説明してみてはいかがでしょうか。
退会済みユーザー

退会済みユーザー

2020/10/21 01:48

アドバイスありがとうございます 意味から調べて内容変更しました!
Usirow

2020/10/21 02:17

いくつか質問させてください。 ①フィルター機能という表現に変更されましたが、つまり 1) 必要な項目は予めすべて用意されている 2) 操作に応じて、それら項目を表示したり、しなかったりする ということでよろしいのでしょうか? 想定された項目数を超えるようなことはないという理解でよろしいですか? ②コマンドボタンは2つの色の間を行ったり来たりするようですが、項目数は2つよりももっと多いですよね? このコマンドボタンは、各項目に対して一つずつ付いていて、それぞれがオンオフボタンのように機能する(Aのボタンを押すと、Aの項目だけが有効になったり無効になったりする)ということでしょうか? それとも、コマンドボタンは一つだけで、このボタンを押すたびに項目が新たに表示されるということでしょうか?
guest

回答2

0

ベストアンサー

とりあえず、

・コマンドボタンを押したら色が変わるようにしてほしい

・もう一度押したら元の色に戻る

ここだけ。あとは何をしたいのか説明不足でよくわかりません。

vba

1Private Sub CommandButton1_Click() 2 If CommandButton1.BackColor = RGB(238, 236, 225) Then 3 CommandButton1.BackColor = RGB(200, 100, 125) 4 Else 5 CommandButton1.BackColor = RGB(238, 236, 225) 6 End If 7End Sub

実現したいことはフィルター機能ということだと質問内容が変更されたので、
下記のようなことだと推測しましたが、あってますか。

  • ActiveXのコマンドボタンがいくつか配置されている。
  • コマンドボタン上にはアイテム名が表示されている(Captionで設定)。
  • クリックすると背景色がトグルで変化する。(選択/非選択を表す。)
  • シート上の表データでコマンドボタンで選択されたアイテムのみ表示するようにフィルターをかける。

上記であっているとして、まず、選択/非選択を表現するコントロールとしてはトグルボタンというのがありますので、それを使うことをお勧めします。Windows標準のUIなのでユーザーも馴染みやすいです。
VBAなしでクリックすると沈み込んで選択状態になり、もう一度クリックすると元に戻って非選択状態になります。

トグルボタンのプロパティ - Excel VBA

あるいはチェックボックスを使うのもいいかも知れません。その方がフィルター機能に近い見た目になります。

あと、「マクロの記録」で、やりたいフィルター操作を記録してみて、生成されたVBAコードを参考に改良していくという作業をします。とりあえずその作業をしてみてください。
わからなければ、マクロの記録で生成されたVBAコードを提示してもらうと、改良点のアドバイスが得られると思います。

投稿2020/10/20 02:54

編集2020/10/21 02:34
hatena19

総合スコア34075

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/10/20 04:42

ご回答ありがとうございます。 ・コマンドボタンを押した数だけ項目が増えて表示されるようにしてほしい ホントにプルダウンと同じ機能にしたい感じです           予)入店時間           予)退店時間           実)入店時間           実)退店時間   もともとこの状態で ボタン名に入店時間、退店時間と書き押したら入店時間 また退店時間を押したら入店時間            退店時間のように項目が増えていく状態を作りたいです
hatena19

2020/10/20 05:28

まず、確認させてください。 これはExcelのユーザーフォームでのVBAの話ですか。 あるいは、シート上でのVBAですか。 あるいは、Word、あるいは、PowerPoint のVBAですか。
退会済みユーザー

退会済みユーザー

2020/10/20 05:40

excelのactivexコントロールなのでシート上のvbaです 説明不足ですみません
hatena19

2020/10/20 05:55

> ホントにプルダウンと同じ機能にしたい感じです プルダウンではだめなんですか。 >           予)入店時間 >           予)退店時間 >           実)入店時間 >           実)退店時間   もともとこの状態で これは何ですか。シート上のセルですか。 ちょっと説明ベタなようですね。相手にちゃんと伝わるかどうか意識して説明できませんか。 現状のシートのスクリーンショットを質問にアップロードしてもらえませんか。
sinzo

2020/10/21 01:15

セルに記入しておいて、ボタン押すごとにセル高さを順次戻していく、、とか? >           予)入店時間 >           予)退店時間 >           実)入店時間 >           実)退店時間
退会済みユーザー

退会済みユーザー

2020/10/21 01:49

ホントに説明不足ですみません 内容変更しました。????
guest

0

コマンドボタンではなく、トグルボタンを使ってみてはいかがでしょうか?
やりたいことに近い機能があるように思えます。
コマンドボタンでも、そのように見せることは可能ですが、
その部分を自作する必要があります。(色を変えるとか)

で、
フィルターは、
詳細設定の方の機能を使い、
条件欄に
トグルボタンで、
凹ませてる項目を追加
凸でクリア
というようなことをしてはいかがでしょうか?

投稿2020/10/21 09:55

mattuwan

総合スコア2163

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問