[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ダブルクリックでワークシートの大きさで写真を貼付ける』(マクロ初心者)
ダブルクリックでワークシートの大きさで写真を貼付けるマクロを教えて下さい。
ワークシートの大きさは様々です。
< 使用 Excel:Excel2013、使用 OS:Windows7 >
ワークシートはセルのことだと思いますが、 (この人も回答に関するレスがありませんでしたが)、こういうことでしょうか。 [[20140304204728]] 『セルに画像をワンクリックで挿入』(ひでぼー)
ニックネームは質問者が識別できるものを使用ください。 (Mook) 2014/03/19(水) 18:08
(マクロ初心者) 2014/03/19(水) 19:39
横から失礼します。
Excel2002で試しましたがきちんと動作しましたよ。 シートモジュールにコピペしましたか? 右クリックイベントで動作するマクロですが、そこは大丈夫ですか? (カリーニン) 2014/03/19(水) 21:02
(マクロ初心者) 2014/03/19(水) 21:45
Worksheet_BeforeRightClick を Worksheet_BeforeDoubleClick に変更してください。
>セルの大きさは変わります。セルの位置も。 については何が問題なのかわからないので、変更が必要でしたらわかるように説明ください。
あと、できればニックネームの変更も。 (Mook) 2014/03/19(水) 23:00
マクロ名はMacro1です。
Sub Macro1()
'
' Macro1 Macro
'
'
Application.Goto Reference:="Macro1" 'ワンクリックで Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim f As Variant
With Application.FileDialog(msoFileDialogOpen) .ButtonName = "ファイル選択"
'マイピクチャーのフォルダーが開き、 .InitialFileName = CreateObject("Shell.Application").Namespace(&H27&).Self.Path
'画像を選んで挿入ボタンを押すと If .Show = -1 Then
'そのセルの大きさに合わせた画像が挿入される ActiveSheet.Shapes.AddPicture Filename:=.SelectedItems(1), _ LinkToFile:=True, SaveWithDocument:=False, _ Left:=Target.Left, Top:=Target.Top, Width:=Target.Width, Height:=Target.Height End If End With End Sub
(マクロ初心者) 2014/03/20(木) 06:14
リンク先に提示したものがすべてです。 余計な部分は削除してください。 (Mook) 2014/03/20(木) 07:46
ご自身で >シートモジュールにコピペしましたが動きません。 と書いているということは、標準モジュール、シートモジュールの区別は付いて いると思ったのですが、そこは大丈夫でしょうか。
対象シートのタブから右クリックで、コードの表示で、表示された部分に 対象コードを貼り付け、シートに戻って対象セルで、左ダブルクリックです。
これで動かない場合は、マクロのセキュリティ設定などだと思いますので、 それは別途確認してください。
ニックネームの件は対応していただけないようですので、 私からのコメント返信は以上となります。 (Mook) 2014/03/20(木) 19:13
ワークシートのイベントの参考HPです。
Excel VBA 入門講座 ワークシートのイベントプロシージャ http://excelvba.pc-users.net/fol3/3_6.html
MooKさんのリンク先のコードを「マクロを起動させたいシート」の「シートモジュール」に
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
の部分を
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
に置換えてコピペしシートモジュールを 閉じてワークシート に戻り、そのシートの 「画像を表示したい」セルをダブルクリックするとマクロが起動します。
ダイアログが表示されますので貼り付けたいファイルを選択するとセルに画像が貼り付け られます。 (カリーニン) 2014/03/20(木) 22:32
Mookさんはもうレスされないと思いますので代理で回答します。
掲示板・ネット初心者の方へ http://crony.x.fc2.com/room/syosinsya.html
>◆ハンドルネームを名乗りましょう >単に画像を貼るだけで、会話に参加しないという人の場合は構わないかも知れませんが >ここは会話中心の掲示板です。「名無し」「通りすがり」や、その場限りの名前(捨てハン)を >名乗るのは止めましょう。ネット上で嫌われる行為の一つです。 >他の掲示板とは違う名前でも構わないと思いますが、同一のサイト内では統一しましょう。
ハンドルネームに「初心者」を使われる方が多いので、他の「初心者」との区別がつかないのです。 ハンドルネームはあなたの「顔」です。「名前」です。
「通りすがり」「名無し」「初心者」は嫌われるハンドルネームの3大巨頭ですよ。
無理に変更する必要はありません。あくまでも任意です。 でも困るのはあなたです。回答者が回答しなくなるだけですので。
私のレスもこれまでとさせていただきます。 (カリーニン) 2014/03/21(金) 00:18
失礼します。回答ではありません。
少し前までここはHNの記載自体も任意のままずっと運用されていましたが、 必ず何かしらのHNを書き込むようにルールが変更されました。
私はその変更に賛成派ですが、それはHNの無い書き込みがただの書き忘れ、もしくは HNの意味が分からず「HNを書いて下さい」と言っても意味が通じない、といった無駄なやりとりを 繰り返す可能性があったからです。
誰とやりとりをしているのかが明確に分かっていれば、常識の範囲内で何を名乗ろうと私は気になりません。
初心者の方がHNに「初心者」を付けたい気持ち、分かる気がしますけどね。 そういったHNが嫌われるという理由なんて、初めて書き込む方が知らなくても無理はありません。
変更を求める事を否定はしませんが、「変えないならもうレスしない」なんて、 そんなに目くじらを立てる事もないのでは?
それよりも質問者が与えられたアドバイスに対してしっかりレスポンスできているかの方が重要で、 今回のケースもそれが無い故の流れかもしれませんが。 (Jera) 2014/03/21(金) 01:14
マクロ初心者さんが >参考までに記載しますのでどこが悪いのか指摘下さい。
と投稿されたコードを拝見して、気になるのは、本当に イベントプロシジャー (Private Sub Worksheet_BeforeDoubleClickで始まるコード)を対象のシートモジュールに 記述されているのか? という既に皆さんが確認してください と記述されている箇所です。
コードを記述する箇所がセルをダブルクリックしたら作動するマクロは、決まった特定の箇所(モジュール)に記述しなければならないのです。
新規ブックを立ち上げて、
マクロの記録を使って、アクティブなシート(現在、見えているシート)のセルA1に 123 と入力してセルに値を確定後、マクロの記録を終了してください。
VBEで確認すると、 対象ブックの標準モジュール(Module1)に
Sub Macro1() ' ' Macro1 Macro '
' ActiveCell.FormulaR1C1 = "123" Range("A2").Select End Sub
こんなコードが記述されているモジュールがあると思います。 上記コードを Sub Macro1() ' ' Macro1 Macro ' msgbox range("a1").value End Sub
と変更して、Macro1を実行してみてください。
セルA1の内容が表示されますか?
さて、このMacro1と同じモジュールに
Private Sub Worksheet_BeforeDoubleClick からなるコードを記述してもダブルクリックで
マクロは起動しません!!
対象シートに対し、ユーザーの動作で起動するイベントプログラムは、対象シートに対応するシートモジュールに記述するのです。
セルA1に123と入力したシートを表示させてください。 シート名が表示されているシートタブにマウスを合わせて、その状態で右クリックしてください。 処理メニューの中に「コードの表示」という項目がありますから、これを選択してください。
これで表示されるモジュールが対象シートのシートモジュールです。
ここにイベントプロシジャーを記述してください。
因みに以下のコードを
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) MsgBox Target.Address & "がダブルクリックされました" Cancel = True End Sub
記述して、Excelに戻って 対象シートの適当なセルをダブルクリックしてみてください。
プログラムが作動するようなら、本題コードを試してください。
(ichinose) 2014/03/21(金) 07:45
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.