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

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

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

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

Q&A

解決済

2回答

22965閲覧

チェックボックスのチェックをつけたら、オブジェクトの丸が表示される方法

haruto4649

総合スコア11

VBA

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

0グッド

0クリップ

投稿2016/11/07 04:30

###実現したいこと

【要望】 エクセルでチェックボックスにチェックをつけたら、オブジェクトの丸が表示され、チェックをはずしたら、そのオブジェクトの丸が消える仕組みを作りたいのです。

VBAは初心者です。

##流れ

メニュー「開発」 → コントロール「挿入」 → フォームコントロール「チェックボックス」で作成 □有休 というような表示を作ります。 このチェックボックスをポチっとすると、この有休を囲むオブジェクト ![イメージ説明](60e8e181ea14e2c64dad8867cb1d6d34.png) こんな感じになるようにしたいのです。。。

どのようなVBAを記載したらいいか、分かる方いらっしゃいますか?

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

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

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

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

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

guest

回答2

0

TeraTailは安易に実行コードのみを提供する場ではありません。
自力で作成したコードの提示もなく「わかる人教えてください」だけでは、丸投げの質問となってしまいます。

今回は上記の観点から正解ソースの提示は控えさせていただきますが、VBA初心者さんということですので開発までのアドバイスのみ記載させていただきます。

大まかな流れ

チェックボックスをクリックするたびに実行されるマクロを作成し、そのマクロで丸の表示したり消したりします。

丸のオブジェクトは毎回位置を指定して作成/消去を行うのでは大変ですので、あらかじめ作成しておいて表示/非表示を切り替えることにします。

1.オブジェクトの準備

①シートにチェックボックスを配置します
②チェックボックスを囲む楕円シェイプを配置します
(必要に応じて線の色や背景透過の設定も行ってください。)

2.VBAマクロの作成

①チェックボックスを右クリックし、「マクロの登録」を選択
②適当な名前(デフォルトではチェックボックス1_Click)を設定し、編集ボタンをクリック
⇒このマクロがチェックボックスをクリックした時に実行されます。

2.VBAコードの記述

作成したマクロにVBAコードを記述します。
①チェックボックスを取得

Dim cbCheck as CheckBox Set cbCheck = Sheets("Sheet1").CheckBoxes(1)

②楕円シェイプを取得

Dim shpCircle as Shape Set shpCircle = Sheets("Sheet1").Shapes(2)

③チェックボックスのチェック状態(cbCheck.Value)を調べて楕円シェイプの表示/非表示(shpCircle.Visible)を切り替える


以上のような流れで目的の動作が実現できると思います。

まずはうまくいかなくても実際に自分で作成してみましょう。
その途中でよくわからない部分などがでてきたら、またこちらで聞いていただければより具体的なアドバイスができると思います。

がんばってください。

投稿2016/11/07 05:44

編集2016/11/07 05:47
jawa

総合スコア3013

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

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

haruto4649

2016/11/16 03:24

jawa様 メッセージありがとうございました。 基本的な事もわからずに投稿してしまって大変申し訳ございませんでした。 今度から、自分でできるところまでをやってきちんと掲示していきたいと思います。 また、何かありましたら、教えてください!! ありがとうございます。
guest

0

ベストアンサー

添付の画像が表示できる環境にいないのでイメージ通りかわかりませんが、とりあえず作ってみました。
チェックボックスのマクロに下記を登録してください。
cnにチェックボックスの要素位置を指定してください。
複数ある場合は何番目になるかわからないので、ご自分の環境にあわせて修正してください。

vba

1Sub 有休_click() 2 Dim s As CheckBox 3 Dim cn As Long 4 cn = 1 ' 対象とするチェックボックスの要素位置を指定 5 Set s = ActiveSheet.CheckBoxes(cn) 6 If s.Value = xlOn Then 7 With ActiveSheet.Shapes.AddShape(msoShapeOval, s.Left + 14, s.Top, 24, s.Height) 8 .Fill.Transparency = 1 9 .Line.ForeColor.RGB = RGB(0, 0, 0) 10 .Line.Weight = 0.75 11 .Name = "oval" & cn 12 End With 13 Else 14 ActiveSheet.Shapes("oval" & cn).Delete 15 End If 16End Sub

投稿2016/11/07 05:10

ttyp03

総合スコア16998

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

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

haruto4649

2016/11/07 05:31

ttyp03様 早速、回答いただきまして、ありがとうございました!! イメージが表示されてない中で、私のイメージ通りになりました! 本当に本当にありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問