[[20140319175611]] 『ダブルクリックでワークシートの大きさで写真を貼』(マクロ初心者) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ダブルクリックでワークシートの大きさで写真を貼付ける』(マクロ初心者)

ダブルクリックでワークシートの大きさで写真を貼付けるマクロを教えて下さい。
ワークシートの大きさは様々です。

< 使用 Excel:Excel2013、使用 OS:Windows7 >


 ワークシートはセルのことだと思いますが、
 (この人も回答に関するレスがありませんでしたが)、こういうことでしょうか。
[[20140304204728]] 『セルに画像をワンクリックで挿入』(ひでぼー)

 ニックネームは質問者が識別できるものを使用ください。
(Mook) 2014/03/19(水) 18:08

返事ありがとうございます。
おっしゃるとおりです。セルの大きさが変わります。
(マクロ初心者) 2014/03/19(水) 18:22

(Mook)様
[[20140304204728]] 『セルに画像をワンクリックで挿入』をコピペしましたが、マクロが動きません。

(マクロ初心者) 2014/03/19(水) 19:39


 横から失礼します。

 Excel2002で試しましたがきちんと動作しましたよ。
 シートモジュールにコピペしましたか?
 右クリックイベントで動作するマクロですが、そこは大丈夫ですか?
(カリーニン) 2014/03/19(水) 21:02

カリーニン様
マクロが組まれているエクセルを参考にし、シートモジュールにコピペしましたが動きません。
それから、右クリックイベントで動作するマクロとは何ですか?
左くりっではないのですか?
すみません、何せ、初心者なので良く解りません。
何が悪いか解らないので参考の為に表示をお願いします。

(マクロ初心者) 2014/03/19(水) 21:45


内容が外れている事に今気付きました。
『セルに画像をワンクリックで挿入』ではなく、『セルに画像をダブルクリックで挿入』です。
セルの大きさは変わります。セルの位置も。
(マクロ初心者) 2014/03/19(水) 22:54

 Worksheet_BeforeRightClick
 を
 Worksheet_BeforeDoubleClick
 に変更してください。

 >セルの大きさは変わります。セルの位置も。
 については何が問題なのかわからないので、変更が必要でしたらわかるように説明ください。

 あと、できればニックネームの変更も。
(Mook) 2014/03/19(水) 23:00

Mook様
回答ありがとうございます。
参考までに記載しますのでどこが悪いのか指摘下さい。
お願いします。

マクロ名は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

さっぱり解らない。
動かない。
何が悪いのか解らない。
(マクロ初心者) 2014/03/20(木) 18:29

 ご自身で
 >シートモジュールにコピペしましたが動きません。 
 と書いているということは、標準モジュール、シートモジュールの区別は付いて
 いると思ったのですが、そこは大丈夫でしょうか。

 対象シートのタブから右クリックで、コードの表示で、表示された部分に
 対象コードを貼り付け、シートに戻って対象セルで、左ダブルクリックです。

 これで動かない場合は、マクロのセキュリティ設定などだと思いますので、
 それは別途確認してください。

 ニックネームの件は対応していただけないようですので、
 私からのコメント返信は以上となります。
(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様
なぜ、ニックネームを変更しなければならないのですか?
理由を教えて下さい。
対応しないのでは無く、理由の記載が無い為対応する必要性はありません。
納得すれば対処します。
(マクロ初心者) 2014/03/20(木) 23:34

 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


皆様、ありがとうございました。
やっと解決しました。
結論から言うと、標準モジュールとシートモジュールを私が勘違していました。
コピペを行ったのは、標準モジュールの方です。
皆様の教えてくれている事が理解できず、ネット検索でやっと理解しました。
ご迷惑をおかけしました。
(マクロ初心者) 2014/03/21(金) 20:15

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.