[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロボタンが写真の下に配置されない』(ささ)
一つのシートに同じサイズの写真を10枚位、
張り付けるシートをマクロを実行して作成しています。
写真をマクロで挿入した際、マクロボタンが前面に表示され、
ボタンと写真どちらを最前面、最背面に選択しても、ボタンが前面にでてしまい、
写真の中央が見えません。印刷するとボタンは消えています。
これを背面にするか、
マクロを実行した際、ボタンを削除するコマンドを追加したいのですが、
どのようにすればよいでしょうか。
moduleは以下の様に書いてあります。
Sub ボタン4_Click()
Call Harituke_(4)
End Sub
Private Sub CommandButton4_Click()
Call Harituke_(4)
End Sub
Sub Harituke_(myNum As Integer)
Dim myGetFileName
Dim myFileName As String
myGetFileName = Application.GetOpenFilename("画像 (*.gif;*.bmp;*.jpg;*.wmf),*.gif;*.bmp;*.jpg;*.wmf,すべてのファイル(*.*),*.*")
If myGetFileName = False Then
Exit Sub End If myFileName = Dir(myGetFileName) If LCase(myFileName) Like "*.jpg" Then myFileName = Mid(myFileName, 1, Len(myFileName) - 4) End If
Select Case myNum
Case 4 Range("b66").Select
End Select
ActiveSheet.Pictures.Insert(myGetFileName).Select
With Selection.ShapeRange
.LockAspectRatio = True .Width = 361 End With
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub
Sub ボタン10_Click()
Call Harituke_(4)
End Sub
Private Sub CommandButton4_Click()
Call Harituke_(4)
End Sub
Sub Harituke_(myNum As Integer)
Dim myGetFileName
Dim myFileName As String
myGetFileName = Application.GetOpenFilename("画像 (*.gif;*.bmp;*.jpg;*.wmf),*.gif;*.bmp;*.jpg;*.wmf,すべてのファイル(*.*),*.*")
If myGetFileName = False Then
Exit Sub End If myFileName = Dir(myGetFileName) If LCase(myFileName) Like "*.jpg" Then myFileName = Mid(myFileName, 1, Len(myFileName) - 4) End If
Select Case myNum
Case 4 Range("b194").Select
End Select
ActiveSheet.Pictures.Insert(myGetFileName).Select
With Selection.ShapeRange
.LockAspectRatio = True .Width = 361 End With
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub
以上、よろしくお願いします。
< 使用 Excel:Excel2007、使用 OS:Windows7 >
>>マクロを実行した際、ボタンを削除するコマンドを追加したいのですが、どのようにすればよいでしょうか。
ボタンを【削除】するということは、もうボタンクリックでのマクロ実行はできないということになりますね。 であれば、最初からボタンを配置せず、ボタン起動ではなく、マクロにショートカットキーを割り当て Ctrl/その文字 での起動にすればいかがですか?
あるいは、ボタン起動のマクロの先頭で、シート上のボタンをすべて非表示。 別途、シート上のボタンをすべて表示にするマクロを用意しておいて、それにショートカットキーを割り当て Ctrl/その文字 でボタンを表示 というのも考えられますね。
>>以下のボタンマクロが数十個もあり、どれが有効になっているのかよくわからないのですが
これらボタンはフォームコントロールのボタンですか? それとも ActiveXコントロールの CommandButtonですか?
いずれにしても、「どれが有効・・」という意味がよくわかりません。 1つには、そのマクロを呼び出しているボタンが、もう存在しなければ、それは確実に、「死んだマクロ」でしょう。 でも、実際に、それぞれのマクロはボタンに紐付いている。 ただし、そのボタンを押して処理する運用はないというポイントであれば それは、回答側では判断できません。
(β) 2015/08/31(月) 20:04
あるいは、ボタンで制御しているのは、貼り付け位置だけのようですから たとえば、セルのダブルクリックイベントあたりで、そのセルの場所に貼り付ける。 そうすると、ボタンは不要ですし、また、プロシジャも1つで済みますね。
(β) 2015/08/31(月) 20:13
現在のコード、フォームコントロールボタン、ActiveX CommandButton 両方のプロシジャが書かれており 実際にシート上に配置されているのがどちらかはわかりませんが、図を挿入した際に、図の上にでるというとこから ActiveXだと推測されます。これらCommandButtonをすべてフォームコントロールに変えれば、とりあえずの目的は 達成されるとは思いますが、いずれにしても、コードそのものを整理されたらいいですよ。
(β) 2015/08/31(月) 21:07
(ささ) 2015/08/31(月) 21:18
以下は、B列セルをダブルクリックで挿入する例です。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim myGetFileName
If Target.Column <> 2 Then Exit Sub Cancel = True
myGetFileName = Application.GetOpenFilename( _ "画像 (*.gif;*.bmp;*.jpg;*.wmf),*.gif;*.bmp;*.jpg;*.wmf,すべてのファイル(*.*),*.*") If myGetFileName = False Then Exit Sub
With Pictures.Insert(myGetFileName).ShapeRange .LockAspectRatio = True .Width = 361 End With
End Sub
ここは、何をしたいのか理解できませんでしたので、対応していません。 >myFileName = Dir(myGetFileName) >If LCase(myFileName) Like "*.jpg" Then > myFileName = Mid(myFileName, 1, Len(myFileName) - 4) >End If
(マナ) 2015/08/31(月) 23:24
是非、マナさんのコードで処理することをおすすめします。 現在の構えは(想像ですけど)、コードとしては フォームコントロールボタンとActiveX CommandButton それぞれ同じロジックを持つものが10個ほど。 それぞれの違いは、図の貼り付け位置のみでしょうから、今あるシートモジュールのコードをすべてけしさり マナさんのダブルクリック処理一本にされることを強く強く推奨。
と思いますが、一応、ボタン非表示と表示のコードを以下に。 ActiveXのほうは、CommandButtonに限らずすべてを非表示にしますので、もし、他の コンロロールがあれば それも非表示になります。具合悪ければ、CommandButtonに限定することもできますが、とりあえず。
Sub ボタン非表示() ActiveSheet.Buttons.Visible = False ActiveSheet.OLEObjects.Visible = False End Sub
Sub ボタン表示() ActiveSheet.Buttons.Visible = True ActiveSheet.OLEObjects.Visible = True End Sub
(β) 2015/09/01(火) 00:05
やはり気になりますので、おせっかいですがコメントします。
最低限、現在のシートに配置されたボタンが、どちらなのかを調べたうえで フォームコントロールなら Private Sub CommandButton4_Click() 等をすべて消去、 ActiveXなら Sub ボタン4_Click() 等をすべて消去しておかれるべきかと。
で、仮にボタンでの処理を継続するということであれば、
・ボタンをフォームコントロールのものにする。 ・以下のマクロを1つだけシートモジュールに記述。 ・そのボタンを(いくつあるのかわかりませんが)クリックされたらその場所に図を挿入したいセルに配置。すべてに同じマクロをマクロ登録。 (ボタンの左上隅がそのセル内に入るように配置してください)
をおすすめします。
Sub 図の挿入() Dim myGetFileName
ActiveSheet.Shapes(Application.Caller).TopLeftCell.Select
myGetFileName = Application.GetOpenFilename( _ "画像 (*.gif;*.bmp;*.jpg;*.wmf),*.gif;*.bmp;*.jpg;*.wmf,すべてのファイル(*.*),*.*") If myGetFileName = False Then Exit Sub
With Pictures.Insert(myGetFileName).ShapeRange .LockAspectRatio = True .Width = 361 End With
End Sub
(β) 2015/09/01(火) 06:42
他にもいろいろな方法を教えて頂きありがとうございます。
参考に保存させていただきます。
ありがとうございました。
(ささ) 2015/09/02(水) 15:00
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.