![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
マクロ初心者です。よろしくお願いいたします。
今スケジュール表をマクロで作成するプログラムを作ってます。
「ある実行項目をいつからいつまでの間にやる」というようなものです。
この「いつからいつまで」というのを矢印で書くようにしたいと思ってます。
日にちを入れれば、そこから矢印の座標を計算し矢印を描画するところまではできました。
しかしスケジュールには変更がつきものです。
日にちを修正して再度「矢印描画プログラム」を走らせると修正後の矢印は書いてくれますが、修正前の矢印は残ったままです(当然ですが)。これを消したいのです。
私としては、プログラムの最初に、まずシート上の図形(矢印)を全て消去して、それからあらためて日程に従って矢印を書き込んでいくというふうにしたいと思ってます。
こんなことってできますか??
よろしくお願いいたします。
No.5ベストアンサー
- 回答日時:
No.3の方とやり方はほとんど同じです。
AutoShapeTypeが-2の場合は直線(矢印を含む)
を削除します。
AutoShapeTypeで削除したい図形を特定できるの
ならばこちらが簡単だと思います。
Private Sub Button1_Click()
Dim s As Shape
For Each s In ActiveSheet.Shapes
If s.AutoShapeType = -2 Then
s.Delete
End If
Next
End Sub
ありがとうございます。
そうですね!わかりやすいですね!
これを使わせていただくことにしたいと思います。
ありがとうございました。
No.4
- 回答日時:
No.1です。
お待たせいたしました。Private Sub Button1_Click()
Dim n As Integer
Dim ZukeiNo As Integer
ZukeiNo = 1
For n = 1 To Shapes.Count
If Left(Shapes(ZukeiNo).Name, 6) = "Button" Then
' 6は"Button"の文字数です "Button"はボタン名と同じにして下さい
ZukeiNo = ZukeiNo + 1
Else
Shapes(ZukeiNo).Delete
End If
Next
End Sub
No.3
- 回答日時:
こんにちは。
aaaは、セルを選択した範囲のシェイプを削除します。
シェイプを選択した時に出る四角形の左上が、選択した
セル内である場合削除します。
Sub aaa()
Dim sh As Shape, r As Range
If TypeName(Selection) <> "Range" Then Exit Sub
For Each sh In ActiveSheet.Shapes
Set r = Application. _
Intersect(Selection, sh.TopLeftCell)
If Not r Is Nothing Then sh.Delete
Next sh
End Sub
bbbはオートシェイプを削除します。
更に矢印だけとかの場合は、AutoShapeType を調べて
判断します。(コメントアウト部分を生かすとオート
シェイプの左向き矢印を削除します)
Arrowだけでも一杯あるので、どのArrowか自分で調べ
てください。
Sub bbb()
Dim sh As Shape
For Each sh In ActiveSheet.Shapes
If sh.Type = msoAutoShape Then
'If sh.AutoShapeType = msoShapeLeftArrow Then
sh.Delete
'End If
End If
Next sh
End Sub
ありがとうございます。
う~ん…高度ですねぇ(少なくとも私にとっては)。
もっと勉強しなければいけませんね。
参考にさせていただきます。
ありがとうございました。
No.2
- 回答日時:
はじめまして。
マクロの自動記録機能を使ってみてはどうでしょうか。操作手順は次のようにします。
1作業をするブックを開き、メニューバーのツール→マクロ→新しいマクロの記録と選択する。
2.マクロの記録というダイアログボックスが表示されるので、そのままOKボタンをクリックする。
3.あなた様のやりたいことを手操作で実行する。
4.作業が終了したら記録と書いてあるダイアログボックスの■ボタンをクリックし、ダイアログボックスを閉じる。
VBE画面を開くとモジュールシートが新規に作成されていますので、その中にあなたがされた作業をするためのコードが書かれています。
もし、モジュールシートが追加されていないときは、標準モジュールシートのどれかにコードが書かれていると思います。
何か解らないことがありましたら、お知らせ下さい。
この回答への補足
ありがとうございます。自動記録機能については最初にやってみました。
矢印がいっぱい引いてあるシート上で、ある範囲を選択しDeleteキーを押しました。
コードは次のとおりでした。
Sub Macro1()
ActiveSheet.Shapes.Range(Array("Line 3", "Line 4")).Select
Selection.Delete
End Sub
これを、作成中のマクロの先頭にそのまま入れても、
実行時エラー'1004':
指定した名前のアイテムが見つかりませんでした。
というメッセージが出て動きませんでした。
対処方法がよくわからなかったので、もっと手っ取り早い方法(範囲指定などせずイッキに消す方法)があるのではないかと思い、投稿した次第です。
No.1
- 回答日時:
宜しければ、下記をお試しください。
Sub ZukeiClear()
Worksheets(1).Shapes.SelectAll
Selection.Delete
End Sub
この回答への補足
ありがとうございます。試してみました。できました!
でも…すみません…全部消すとマクロボタンまで消えてしまうのですね…
ボタンだけ残すことはできませんか?
ある指定の行の中にある図形(矢印)だけを消すなんてことできませんか?
最悪は、ボタンを使わずに、メニューバーからいちいちコマンドを選んで実行するようにすればいいのですが…できればボタンでやりたいのです。
申し訳ありませんがよろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別シートのマクロを実行する方法
-
エクセルVBAで、ボタンの文字を...
-
Application.Runエラー(1004)
-
特定のシートだけ印刷はマクロ...
-
Access終了時にマクロまたはVBA...
-
アクセス起動時にVBAを実行させ...
-
ExcelのVBAでDisplayalertsで警...
-
ExcelVBAで右クリックメニュー...
-
エクセル VBA SendKeys ループ...
-
マクロの自動記録機能について
-
InputBox内の表示について
-
アクセスのマクロについて
-
<<ACCESS2000>>マクロでクエリ...
-
シート保護を掛けたまま並べ替...
-
Workbook_Openを起動時以外に呼...
-
エクセル2003 リソース不足
-
エクセルのマクロボタンが編集...
-
アクセス:検索フォームボタンに...
-
アクセスの更新クエリをフォームで
-
マクロとモジュールの違いを教...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別シートのマクロを実行する方法
-
Application.Runエラー(1004)
-
エクセルのマクロボタンが編集...
-
Access終了時にマクロまたはVBA...
-
エクセルVBAで、ボタンの文字を...
-
InputBox内の表示について
-
access2010 コマンドまたはアク...
-
シート保護を掛けたまま並べ替...
-
今日の日付の範囲を指定して印...
-
マクロ 戻るボタンを押したらシ...
-
エクセル VBA SendKeys ループ...
-
AccessでExcelファイルを印刷
-
ExcelのVBAでDisplayalertsで警...
-
マクロとモジュールの違いを教...
-
ExcelVBAで右クリックメニュー...
-
プロシージャが大きすぎます!
-
エクセルのマクロ
-
アクセス:検索フォームボタンに...
-
特定のシートだけ印刷はマクロ...
-
アクセスのマクロについて
おすすめ情報