勤務先で、Excelで作成した住所一覧から封筒あて名印刷ができるようにVBAを設定をしました。
分からないことがあり、「教えて!goo」で質問をします。
以下をご参照の上、アドバイスを頂けると大変助かります。
VBAは初心者です。
この封筒あて名印刷のExcelファイルは、当方史上の大作で完成させたいの一心です。
どうぞ、よろしくお願いいたします。
【困っていること】
料金別納表示の下半分を広告に使えると聞き、Excelの図形を組み合わせて作成しました。
コマンドボタンで表示することはできるのですが、削除の設定が出来ずに困っています。
料金別納表示をコマンドボタンで削除するコードに知識がないため、ネット検索してはコピペを繰り返すもエラー。
料金別納表示は図形なのか、画像なのかでコードが変わってくるのかも分からず、お手上げ状態です。
【Excelで作成したのは、以下の通りです】
①「sheetあ」の「A1セル」に、図形を組み合わせて料金別納表示を作り、グループ化しました。
②「sheetい」の「A1:D4セル」を結合して、中央揃えで結合しました。
③「sheetい」にコマンドボタンを作り、①の料金別納表示を②に表示させました。
【要望】
『「料金別納表示削除コマンドボタン」をクリックしたら、削除できた』を、したいのです。
料金別納表示をコマンドボタンで削除するコードに知識がないため、ネット検索してはコピペを繰り返すもエラー。
料金別納表示は図形なのか、画像なのかでコードが変わってくるのかも分からず、お手上げ状態です。
【参考までに】
①料金別納表示をコマンドボタンで表示させてるコードです。
Private Sub CommandButton14_Click() '料金別納表示広告
Sheets(あ).Range("A1").CopyPicture Appearance:=xlScreen, Format:=xlPicture 'シート「あ」の「A1セル」の画像を
Sheets(い).Paste Sheets(い).Range("A1") 'シート「い」の「A1セル」に貼り付けて
【添付ファイルの説明】
文章だけでは分かりにくいと思い、Excelの画面をコピペしました。
【その他】
料金別納表示が楕円になっていますが、あえて楕円にしてますので、そこを突っ込まれてもスルーします。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
既に、ご質問者のご希望に沿って、マクロを使った方法が複数回答されています。
ただ、
>コマンドボタンを作り、①の料金別納表示を②に表示させました。
>「料金別納表示削除コマンドボタン」をクリックしたら、削除できた』を、したい
というご説明が【料金別納表示と非表示(つまり削除された状態)の切り替えを行いたい】という意図なら、必ずしもマクロでなくても実現できます。
>住所一覧から封筒あて名印刷ができるようにVBAを設定をしました。
ということなので、封筒あて名印刷の部分はVBAに頼るとして、料金別納表示はチェックボックスを設けて、「料金別納表示」にチェックを入れると「(楕円の)料金別納の画像」が表示され、チェックを外すと、「料金別納の画像」が消えるという挙動を実現する方法はいかがでしょう。
https://hirogura.com/2016/05/12/post-1793/
上記のURLの「画像を自動で切り替える」方法が記載されています。このURLでは「野球チームのロゴ」の切り替えですが、これを参考にして、「別納料金画像」の「表示」と「非表示」を切り替えることにします。切り替える画像の一方を「料金別納の画像」、もう一方を「無地(白色)の画像」とし、この二つをチェックボックスの「TRUE」「FALSE」に連動させます。
仮に、チェックボックスの連動セルが「sheetあ」のL1セル、「シートあ」のL2セルで「表示」「非表示」を判定するとして、「シートあ」のL2に
=IF(Sheetあ!$L$1,"表示",非表示")を入れて、名前の定義で名前を「料金別納」、参照範囲を「=INDIRECT(Sheetあ!$L$2)」とします。
「料金別納の画像」のセルに「表示」、「無地(白色)の画像」のセルに「非表示」と名前をつけてリンク貼付けし、URLの指示に従えば、「チェックリストのチェックを外す」というワンクリックで料金別納表示の画像が消えることになるので、「削除コマンドボタンを押す」という手数と変わりません。
前述のとおり、【料金別納表示と非表示(つまり削除された状態)の切り替えを行いたい】という意図なら、この方法でもよいのではないかと思います。
goomania 様
お忙しい中、ご回答くださり、ありがとうございます。
添付して頂いたURLと、その下のご回答を参考にやってみたのですが、できないんです。
「チェックボタンでできないなら、プルダウンに画像と空白(削除した状態)でできるかも」とやってみたものの、画像の表示すらできませんでした。
原因は、当方の知識不足ですが、画像の大きさ?、貼り付け箇所セルの結合?も関係しているのか、よく分からずです。
現在は、No2のkigoshiさんとNo4のfujillinさんのお礼コメントに応急処置コードを書きました。
今後の時代の流れと共に封筒印刷することも減りますが、しれでもまだ数年は使用していくので、なんとかしてコマンドボタンに限らず、他の方法でもクリック(Wクリックでも可)だけで画像を削除できるように、勉強をしていきます。
ありがとうございました。
No.4
- 回答日時:
こんにちは
CopyPictureメソッドの場合は、エクセルが新しく画像を作成してしまうので、元のオブジェクトのプロパティなどは利用できませんね。
Paste直後に、
PicName = Selection.Name
等としておけば、貼り付けた図形のName属性を取得できます。
これで記憶しておいて、No1様の最初の方法で消去できるでしょう。
(Pictureそのものを保存しておいても良いです)
「A1セルにある画像を消去する」という方法で行うなら、
No1様の2番目の方法で、Top、Left が共に0である(=A1セルにあることを意味します)Shape要素を削除するようにすれば宜しいでしょう。
fujillin 様
お忙しい中、ご回答くださり、ありがとうございます。
2行目、
「CopyPictureメソッドの場合は、エクセルが新しく画像を作成してしまう」
これに悩んでいます。
そもそも画像(Picture数字)がかわるため、そこからヒントを頂き、またNo2のkigoshiさんの回答を参考にしながら、下記の通り応急処置をしました。
「Dim i As Long
On Error Resume Next
For i = 40 To 9999
ActiveSheet.Shapes.Range("Picture " & i).Delete
Next i」
9999まで行ったらどうなるのかな?と思いつつ、応急処置してます。
少ない数で実験をするといいんでしょうけど、まだやっていないです。
9行目、
「A1セルにある画像を消去する」をやってみたところ、できなかったんです。
当方のコードイメージとしては、
①A1セルの画像を選択(画像を選択すると四隅に小さい白い〇ができる)
②A1セルの画像を削除
なんですが、違うんでしょう。
なんとかしたいので、VBAの勉強をしていきます。
ありがとうございました。
No.3
- 回答日時:
No.2です。
全部書いちゃうと、こんなかんじですか。
Dim shCnt As Integer
Private Sub CommandButton14_Click()
Sheets(あ).Range("A1").CopyPicture Appearance:=xlScreen, Format:=xlPicture 'シート「あ」の「A1セル」の画像を
Sheets(い).Paste Sheets(い).Range("A1") 'シート「い」の「A1セル」に貼り付けて
shCnt = Sheets(い).Shapes.Count
End Sub
Private Sub CommandButton15_Click() 'コマンドボタンの名前は適宜変更してください
Sheets(い).Shapes(shCnt).Delete
End Sub
kigoshi 様
コマンドボタンの名前の付け方が分からないんです。
No1のssawatakeさんのご回答と同じことをしてみたのですが、できないんです。
6行目「xlPicture」は、「xlPicture」ですよね。
当方のVBAの知識不足から、みなさんのご回答で解決できないでいます。
申し訳ありません。
No.2
- 回答日時:
Dim shCnt As Integer
シート「い」の「A1セル」に貼り付けた処理の直後
shCnt = Sheets(い).Shapes.Count '貼りつけた図が何番目か
その他の処理
Sheets(い).Shapes(shCnt).Delete '「A1セル」に貼り付けた図を削除
ということをやりたいのでしょうか。
kigoshi 様
お忙しい中、ご回答くださり、ありがとうございます。
当方の説明が分かりにくく申し訳ありません。
3行目の「'貼りつけた図が何番目か」
料金別納表示を広告4種類作成しましたので、「貼り付けた図が何番目か」は、貼り付けた数、図を消した数だけの番数になります。
kigoshiさんの回答を参考にしながら、
「Dim i As Long
On Error Resume Next
For i = 40 To 9999
ActiveSheet.Shapes.Range("Picture " & i).Delete
Next i」
で、応急処置をしています。
9999まで行ったらどうなるのかな?と思いつつ、応急処置してます。
今後も勉強して、VBAが分からない人にもなんとか扱えるように、手間が1つでもなくなるファイルを作っていきます。
この度は、ありがとうございました。
No.1
- 回答日時:
図形に名前を付けるならば、
Activesheet.Shapes(図形の名前).Delete
シート内一括削除で構わないなら
ActiveSheet.Shapes.SelectAll
Selection.ShapeRange.Delete
ssawatake 様
お忙しい中、ご回答くださりありがとうございます。
当方がVBA初心者なのと、Excelの機能を分かっているつもりの中途半端な知識しかないと気づかされました。
まず、
Activesheet.Shapes(図形の名前).Delete。
図形の名前の付け方が分からず、
・Excelの左上の四角いところで図形の名前を付ける
・コード内で名前を付ける
上記2点をGoogle先生の助けも借りながらやってみたものの、できませんでした。
「シート内一括削除」は、
画像が消えました!
が、同じシート状にあったコマンドボタンも消えてしまいました。
で、現在は、
「Dim i As Long
On Error Resume Next
For i = 40 To 9999
ActiveSheet.Shapes.Range("Picture " & i).Delete
Next i」
で、応急処置をしています。
9999まで行ったらどうなるのかな?と思いつつ、応急処置してます。
今後も勉強して、なんとかVBAが分からない人にも扱えるように、手間が1つでもなくなるファイルを作っていきます。
この度は、ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) シート名をフォルダ名に変更 1 2021/12/01 15:59
- Visual Basic(VBA) EXCEL VBA シート比較し〇×判定 1 2021/11/19 11:49
- Excel(エクセル) Excelのシートの表示、非表示の方法について教えてください。 4 2022/02/02 08:41
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Visual Basic(VBA) 空のシートに関数を入れたい 2 2021/12/03 15:08
- Visual Basic(VBA) シート名でファイル検索する 2 2021/11/30 17:05
- Excel(エクセル) ワードのマクロについて教えてください。 1 2023/03/11 13:50
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Word(ワード) 相互参照で図1.1としか挿入されない 3 2021/11/16 04:17
- Visual Basic(VBA) 【VBA】ユーザーフォーム リストボックスのヘッダー設定方法 2 2021/12/02 11:15
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
DBCS関数とは何ぞやッ!
Excel(エクセル)
-
Excel 書式のクリア・値貼付けをしても書式が変わらない
Excel(エクセル)
-
エクセルのハイパーリンクで質問です。
Excel(エクセル)
-
-
4
Excelのカレンダーを作成しようと思っているのですがうまくいきません
Excel(エクセル)
-
5
エクセルで有効桁数を確認する方法
Excel(エクセル)
-
6
Googleシート「A1」でなくて「A001」にしたいのですが
Excel(エクセル)
-
7
エクセルで条件書式と数式の組み合わせはできる?
Excel(エクセル)
-
8
エクセルで【0.5日と1日】を表示したいのですが。。。
Excel(エクセル)
-
9
エクセルの行を巾を変えずに増やす方法
Excel(エクセル)
-
10
エクセルのcountifのワイルドカードについて
Excel(エクセル)
-
11
IFS関数について教えてほしいです!
Excel(エクセル)
-
12
エクセル関数またはVBAについて
Excel(エクセル)
-
13
【Excel】こんな表の整形をするには?
Excel(エクセル)
-
14
マクロのコードについて解説をお願いします
Excel(エクセル)
-
15
データから単位文字を除去して計算する方法は?
Excel(エクセル)
-
16
エクセルで、小数点以下がないときに小数点を表示させない方法 +語尾に「(半角スペース)%」
Excel(エクセル)
-
17
ある値に対して3番目に大きな値を、なければ2番目に大きな値、それもなければ1番大きな値を表示させたい
Excel(エクセル)
-
18
【マクロ】book1からbook2への適切な転記が出来ない件
Excel(エクセル)
-
19
エクセルの数式で教えてください。
Excel(エクセル)
-
20
Excel、Wordで入力をしていたら このように[漢数字]と出てきて入力中の文字が見えず、入力しに
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel:コマンドボタンの移動
-
スクロールしてもボタンを常に...
-
押したボタンの位置取得(共通の...
-
コマンドボタンを押すたびに大...
-
ShowAllDataのエラーを回避したい
-
チェックボックスで「いずれか1...
-
ワードにタイマーを設定したい
-
Accessユーザーフォームでコマ...
-
エクセルVBA シート上にあるコ...
-
コマンドボタンがきかなくなる
-
astahのアクティビティ図の書き...
-
エクセルVBAでOptionButtonのオ...
-
Accessのコマンドボタンの立体...
-
コマンドボタンで「終了ボタン...
-
エクセルでコマンドボタンを押...
-
エクセルのコマンドボタンの位...
-
InDesignには「1段階戻る」の...
-
エクセルVBA
-
Wordでドラッグした文字列を括...
-
[ExcelVBA] コマンドボタンを押...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel:コマンドボタンの移動
-
コマンドボタンを押すたびに大...
-
スクロールしてもボタンを常に...
-
押したボタンの位置取得(共通の...
-
コマンドボタンがあるかどうか...
-
エクセルVBAでOptionButtonのオ...
-
エクセルVBA シート上にあるコ...
-
Excel VBA --- コマンドボタ...
-
エクセルVBA
-
Accessのコマンドボタンの立体...
-
PPTのコマンドボタンがクリック...
-
コマンドボタンで「終了ボタン...
-
EXCELでNo.を変えて印刷したい
-
エクセルのコマンドボタンの位...
-
ShowAllDataのエラーを回避したい
-
[ExcelVBA] コマンドボタンを押...
-
実行中の作業を中止させるコマンド
-
Wordでドラッグした文字列を括...
-
Accessユーザーフォームでコマ...
-
マクロ登録ボタンに色をつける
おすすめ情報
VBA通のみなさんに補足をわかりやすく書き、ヒント等を頂けたらと思っていますがが、「アウトプットが出来ないと言うことは、VBA知識が乏しい」現実に、困っています。
また、ご回答をいただいても理解するのに時間がかかり、現在は応急処置中です。
例えば、
ボタン等に「名前を付ける」は、「Sheetあ」で「名前の定義」を使用し名前を付ける。
「Sheetい」に画像を反映させたとて、名前までは引き継がれない。
ここで、当方がフリーズしてしまいます。
明日と言うか今日、会社でファイルとにらめっこする時間を数分設けてみます。