- ベストアンサー
エクセルで図形を点滅させる方法について
エクセル2013で挿入の図形にあるスマイルを点滅させることはできないのでしょうか。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
https://www.extendoffice.com/ja/documents/excel/4829-excel-blinking-shape.html こちらが参考になるのでは 上記サイトを参考に作ってみました。 Dim NextTime As Date Sub Flash() NextTime = Now + TimeValue("00:00:01") With ActiveSheet.Shapes("Smiley Face 1") .Visible = Not .Visible End With Application.OnTime NextTime, "Flash" End Sub Sub StopIt() Application.OnTime NextTime, "Flash", schedule:=False ActiveSheet.Shapes("Smiley Face 1").Visible = True End Sub
その他の回答 (6)
- watabe007
- ベストアンサー率62% (476/760)
0.3秒毎に点滅 (秒数は"0:00:00.3" で調整してみてください。) Dim NextTime As Double Sub 点滅開始() NextTime = [Now() + "0:00:00.3"] With ActiveSheet.Shapes("Smiley Face 1") .Visible = Not .Visible DoEvents End With Application.OnTime NextTime, "点滅開始" End Sub Sub 停止() Application.OnTime NextTime, "点滅開始", schedule:=False ActiveSheet.Shapes("Smiley Face 1").Visible = True End Sub
- mdmp2
- ベストアンサー率55% (438/787)
No.5 補足です。 1秒以下の短い時間で点滅させたいときは、Application.wait の代わりに、windows api を使用した、「sleep xxx」を使ってください。詳細は次のページを参照してください。 https://bayashita.com/p/entry/show/252
- mdmp2
- ベストアンサー率55% (438/787)
No.2 です。 2つの図面をつかって、一方を前面にしたり背面にしたりすることにより点滅を表現すると、複雑な点滅ができるのですが、単に点滅だけでよければ、No.3 さん、No.4 さんの回答のように、一つの図形の表示/非表示を切り替えるだけでできます。 No.3 さんの回答をヒントに、作成してみました。 ーーーーーーーーーーーーーーーーーーーーーーーーー Sub Flash() Dim ii As Integer For ii = 1 To 10 With ActiveSheet.Shapes("スマイル 1") .Visible = False Application.Wait Now + TimeValue("00:00:01") .Visible = True Application.Wait Now + TimeValue("00:00:01") End With Next ii End Sub ーーーーーーーーーーーーーーーーーーーーーーーーー ・「For ii = 1 To 10」の10 は10回繰り返すコードです。 ・「With ActiveSheet.Shapes("スマイル 1") 」では、「スマイル 1」という名前の図形について実行します。 作成した図形を選択すると、「名前ボックス」{リボンの下、左端}に図形の名前が表示されます。その名前を" "でくくって記述します。 ・「Application.Wait Now + TimeValue("00:00:01")」では、次の操作まで1秒待ちます。 2秒待つには"00:00:02") にします・「.Visible = False」では、with.. で規定した図形を非表示にします。。 ・「.Visible = true」では、with.. で規定した図形を表示します。 ・「Application.Wait Now + TimeValue("00:00:01")」では、次の操作まで1秒待ちます。 ・「End With 」は、「with .... 」をクローズするために必要なコードです。 ・「Next ii」は、for... に戻って繰り返すコードです。 このマクロを挿入したスマイル図形に登録すると、スマイルをクリックすると点滅を始めます。 このマクロの残念なところは、1秒より短い時間で点滅させることができないところです。
- imogasi
- ベストアンサー率27% (4737/17069)
ブリンクとかフラッシュとかいう機能に、あたるのだろうが、エクセルの操作には、この機能はないと思う。 ーー こんな質問を出すのは、ゲームやWEBに日常接している世代だろうな, と思ってしまう。 エクセルは、どちらかというと、文字と数字(数値)の世界のソフトです。画像を動かすとかの機能はない。WEBのHTML文には、BLINKがあったように思うが。 エクセルが初めに作られた頃は、表計算ソフトは事務的な用途しか、考えていなかった。 というか、コンピュター中央処理能力がまだ低かったせいもあろう。 最近は、エクセルも飾り的なものを充実しようとしているように見えて、スタイルや図などの種類も増えてきて、小生は戸惑う。 ーー さて本題、 挿入ー図ースマイルの図形をシート上に作るには、エクセル・VBAでは 標準モジュールに 下記をコピペして実行。 すると1つ図形が作成される。 種類 = 17がスマイル図形を示す、コード番号です。 WEB記事を探せば、その図形の種類のコードは何番かがわかる。 位置などは下記の、L,T,W,Hの数値が決める。 色や線の色も、下記で1つの場合を指定している。 下記コードの類似記事もWEBには載っている。 ーー Sub オートシェイプ画像を挿入する() Dim 種類 As Integer 種類 = 17 L = 100: T = 200: W = 50: H = 50 Set shp = ActiveSheet.Shapes.AddShape(種類, L, T, W, H) With shp .Fill.ForeColor.RGB = RGB(255, 255, 0) .Line.ForeColor.RGB = RGB(0, 0, 0) '.ForeColor.RGB = RGB(170, 170, 170) End With End Sub ーー これは、手作業操作でもできる。しかし作成した図形のIndex番号が初心者には、割り出し・わかりにくいと思う。 === 次に点滅だが、Visible法をやってみる。 ーー 標準モジュールに、下記をコピペ。 Sub Flash2() NextTime = Now + TimeValue("00:00:01") With ActiveSheet.Shapes(1) If .Visible = False Then .Visible = True Else .Visible = False End If End With Application.OnTime NextTime, "Flash2" End Sub 実行すると、1秒ごとに表示ー消える、を繰り返す。 ーー ここには、(有名な)「再帰プログラム法」という手法が使われていて、コードが簡潔になっている。 しかしプログラム経験の少ない人には、わかりにくいだろう。 == 残る必要な機能は、 (1)どのようにして、必要な時に点滅を起動する仕組VBAを作るか (2)上記では、永久繰り返しを止めるのはどうするか (本稿では略) その他に、沢山のVBAの付帯知識が必要で、質問者には無理だろうと想像する。 初心者は、勞が多いので、ブリンクはあきらめた方がよかろうと思う。
- mdmp2
- ベストアンサー率55% (438/787)
エクセルシート上に「点」のときのスマイル図形と、「滅」のときのスマイル図形を作り、ピッタリと重ねます。 図形をマウスでクリックして選択すると、「描画ツール 書式」というタブが表示されると思います。 「描画ツール 書式」を選択して、「配置」グループの中にある「背面へ移動」をクリックすると、下に隠れていた図形が表示されます。「全面へ移動」をクリックすると、先程の図形が再び表示されます。「前面」クリック、「背面」クリックを繰り返すと、スマイルが点滅するように見えます。 まず、これを実験してみてください。 イメージ通りの点滅ができたら、この操作を自動実行するマクロを作成します。 実験でイメージ通りの点滅が得られないなら、この方法は捨ててください。 マクロコードの記述方法など、わからないところがありましたら、補足質問してください。
- OKWave088
- ベストアンサー率10% (13/126)
点滅するスマイルの図形をつくって挿入すればいい
補足
スマイルを白塗りにしたのと重ねたら確かに点滅するように見えます。 すみませんが、特定時間点滅するようにマクロを記述していただけないでしょうか。 よろしくお願いします。