お世話になります。
件名と同じくエクセルで、ボタンを使わずセルを選択する事により任意のマクロを実行させる事は可能かをお伺いしたく存じます。

【詳細】
現在、特定のセルを基点に画像を決められたサイズで挿入する作業を行っております。
画像を挿入する基点とするセルは複数あり、その度に図形の挿入のコマンドを選択しております。
ただ、非常に短銃作業ではあるのですが、量があまりにも多い為、
セルを選択した段階で挿入する画像ファイルを呼び出す画面を表示するように出来ないだろうかと思い質問致しました。

以上、お時間のある時で構いませんのでご教授下されば幸いです。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

セルを選択したときにマクロを起動するならシートモジュールにそのマクロを書いておきます。



Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$1" Then 'この例だと$A$1を選択したときだけ
MsgBox "Macro was done" 'この文を画像ファイルを呼び出すマクロに置き換える
End If
End Sub
    • good
    • 0
この回答へのお礼

早速の回答ありがとう御座います。
また、サンプルのマクロまで回答下さり感謝致します。
実は、シートモジュールや標準モジュール、ブックモジュールなど
各モジュール毎の、できること、できないことといった機能的な特色に関してあまり理解できておりませんでした(^^;)
ですが今回の質問を機に改めて覚えてみようかと思います。
非常に助かりました。また質問した際にもご教授下されば幸いです。

お礼日時:2009/05/26 21:52

使いにくい場面もありそうな気がしますが、とりあえず…



セルの指定位置は修正してください。
(仮にA1、B2、C3にセットしてあります)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Intersect(Target, Range("A1,B2,C3")) Is Nothing Then Exit Sub

Application.Dialogs(xlDialogInsertPicture).Show
End Sub
    • good
    • 0
この回答へのお礼

早速の回答ありがとう御座います。
また、サンプルマクロまで短時間で作成して頂き、大変感謝しております。
今後も質問するあるかと存じます。その際も懲りずにご教授頂ければ幸いです。
重ねてではありますが、ありがとう御座いました。

お礼日時:2009/05/26 21:26

こんにちは。



Worksheet_SelectionChangeイベントは、シート内の選択セルを変更するたびに発行されます。
これを活用してみてはいかがでしょう。
    • good
    • 0
この回答へのお礼

早速の回答ありがとう御座います。
Worksheet_SelectionChange。云われてみれば以前、条件付き書式を拡張したマクロを作成した際使っておりました。
独学で丸のみしてきたせいか、応用が利かなくなっておりますね(^^;)
質問させて頂いてよかったです。
感謝いたします。

お礼日時:2009/05/26 21:40

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVBA(マクロ)を勉強したい

VBAを勉強したいのですが、オススメの本等教えて下さい。
今FOM出版のマクロ入門を買って勉強しています。大体の基本操作は分かった気がします。

Aベストアンサー

こんにちは。

ここら辺が参考になると思います。

日本VBA協会の参考書籍
の準拠本
http://www.vbaa.jp/training/books.htm

アマゾンのExcelVBA
http://www.amazon.co.jp/exec/obidos/ASIN/4774119660/vbaajpn-22/249-7235447-7367506

Qセルをダブルクリックで、画像を選択、挿入したい時

こんにちは。
excel初心者、VBA初心者です。

セルをダブルクリックで、画像を選択し貼りつけるのに、
下記のコードを使っています。
これはネットで見つけてコピペしたものです。
今回困っている事は、このコードが全のセルに対応してしまうことです。
B列のみに対応させて使いたいのですが、コードの変更の仕方が分かりません。
教えていただきたいです。宜しくお願いします。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)

Cancel = True

'===============画像選択
myF = Application.GetOpenFilename _
("jpg bmp tif png gif,*.jpg;*.bmp;*.tif;*.png;*.gif", , "画像の選択", , False)
If myF = False Then
MsgBox "画像を選択してください(終了)"
Exit Sub
End If

'===============画像の掃除
For Each mySP In ActiveSheet.Shapes
myAD1 = mySP.TopLeftCell.MergeArea.Address
myAD2 = Target.Address
If myAD1 = myAD2 Then mySP.Delete
Next

'===============画像の貼り付け
Set mySP = ActiveSheet.Pictures.Insert(myF)

'===============タテヨコの縮尺を保持
myHH = Target.Height / mySP.Height
myWW = Target.Width / mySP.Width
If myHH > myWW Then
mySP.Height = mySP.Height * myWW
mySP.Width = Target.Width
Else
mySP.Height = Target.Height
mySP.Width = mySP.Width * myHH
End If

'===============中央へ調整
myHH2 = (Target.Height / 2) - (mySP.Height / 2)
myWW2 = (Target.Width / 2) - (mySP.Width / 2)
mySP.Top = Target.Top + myHH2
mySP.Left = Target.Left + myWW2

Set mySP = Nothing

End Sub

こんにちは。
excel初心者、VBA初心者です。

セルをダブルクリックで、画像を選択し貼りつけるのに、
下記のコードを使っています。
これはネットで見つけてコピペしたものです。
今回困っている事は、このコードが全のセルに対応してしまうことです。
B列のみに対応させて使いたいのですが、コードの変更の仕方が分かりません。
教えていただきたいです。宜しくお願いします。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)

Cancel = True

'===...続きを読む

Aベストアンサー

こんにちは

>B列のみに対応させて使いたいのですが
Targetにダブルクリックされたセルが渡されますので、その列をチェックしてB列以外は何もしないようにすれば良いでしょう。

具体的には、Cancel = True の次に

 ' B列以外の場合は終了
 If Target.Column <> 2 Then Exit Sub

などを入れておけばよろしいかと。

QマクロとVBAの違いは?

最近officeのVBAを勉強してるのですが「マクロ」と「VBA」って何が違うのでしょうか?

アクセスはマクロとVBA(VBE)が別れてるけど、
エクセルは「マクロの記録」でVBAコードが取得できますよね。

マクロとVBAは同じ意味なのか、違う意味なのか教えていただけますか?

Aベストアンサー

こんにちは。

#2さんの引用先と同じ内容ですが、日本語として出ていたはずです。

マクロとVBAを、一応、定義として把握していないと、きちんと人には教えられないと思いますね。アクセスには、一般的に、VBA側で作られたものは、マクロとは呼べません。

理由は、「マクロ」というのは、その取り扱い言語は別として、ひとつの作業(タスク)の自動実行を目的とする機能のことです。逆にいうと、ひとつの作業を実行できないものは、マクロとは呼びません。例えば、引数を必要とするユーザー定義関数は、マクロの範疇から外れます。

マイクロソフトでは、こう定義しています。

以下は、内容的に、あくまでも、VBAの範疇に対して書かれています。

マクロは、より意味の限定された用語で、引数を持たないパブリックなSub プロシージャのことだけを指します。すべてのマクロはプロシージャですが、すべてのプロシージャがマクロであるとは限りません。マクロの記録機能を使って生成されるプロシージャとOffice アプリケーションの[マクロ]ダイアログボックスから実行できるプロシージャは、すべてマクロです。

それに反して、VBAというのは、アプリケーション用のVisual Basic プログラミング言語です。

「VBA」で書かれたものを総称して、プロシージャと呼び、マクロとは厳密には意味が異なります。また、Ver.4 の「マクロ関数」で書かれたものも、プロシージャで自動実行で作業をするものも、総称してマクロと呼びます。また、ひとつのブックにあるモジュール(=プロシージャを呼び出すためのオブジェクト)群をプロジェクトと呼び、「モジュール」を組み合わせ一貫した仕事をするようにしたものを「システム」と呼んだりします。

これで、違いが分かっていただけたかと思います。

こんにちは。

#2さんの引用先と同じ内容ですが、日本語として出ていたはずです。

マクロとVBAを、一応、定義として把握していないと、きちんと人には教えられないと思いますね。アクセスには、一般的に、VBA側で作られたものは、マクロとは呼べません。

理由は、「マクロ」というのは、その取り扱い言語は別として、ひとつの作業(タスク)の自動実行を目的とする機能のことです。逆にいうと、ひとつの作業を実行できないものは、マクロとは呼びません。例えば、引数を必要とするユーザー定義関数は、マクロの...続きを読む

Qエクセルで複数のセル選択をした後、選択したセルの1つを選択解除したい

m(__)m早速ですが、質問をさせて戴きます。

セルA1を選択し、次にコントロールキーを押しながら、A3セル、同じくA5セルと合計3つのセルを選択しているとします。

この状態で、A3セルだけの選択を解除し、結果としてA1セルとA5セルのみが選択された状態にするにはどうすればいいでしょうか?

Aベストアンサー

A1、A3、A5を選択した状態から、

(1)Tab、またはShift+TabでA3を選択状態にします。
(2)Shift+↑を2回行います。(A1:A3、A5が選択状態に変わる。A3がアクティブ)
(3)Shift+Tabを2回行います。(A1:A3、A5が選択状態のまま。A1がアクティブに変わる)
(4)Shift+↑を2回行います。(A1、A5が選択状態に変わる。A1がアクティブ)

なお、『↑』は上方向へのカーソル移動キーです。


やっていることは、
  『選択を取り消したいセルまたはセル範囲』と
  『その1つ前のセルまたはセル範囲』をいっしょにして
  『選択を取り消したいセルまたはセル範囲』部分を縮小する
と表現すればいいでしょうか。

QVBAとマクロ

お世話になります。田吾作7です。

ふと思ったのですが。。。

VBAとマクロの違いって何でしょう?
「マクロの記録」ボタンを押したのがマクロですか?
VBAは、MS-Officeのモジュールにユーザ自身が書き込んだら、それはVBAですか?
もしそうなら、[マクロの記録]ボタンはなぜ[VisualBasicツールバー]にボタンがあるのでしょうか。マクロを編集しやすくするためでしょうか?

記録で
Range("A1").select
それを編集で
Range("A2").select
としたらVBA?

さらに最初っから
Range("A2").select
と記録したマクロは、やっぱりマクロ?


VBAとマクロって違いあるのでしょうか?
いつも疑問に感じて、モヤモヤしてます。
だれか、このモヤモヤ感を解消してください。

よろしくお願いします。


余談ですが・・・
VBAは[VB for Application]ですよね?
Office関連のためのVBってことですよね。
でもAPIを使ってWINDOWSを制御することもできるから[for App]の意味が無いような気がする今日この頃・・・

お世話になります。田吾作7です。

ふと思ったのですが。。。

VBAとマクロの違いって何でしょう?
「マクロの記録」ボタンを押したのがマクロですか?
VBAは、MS-Officeのモジュールにユーザ自身が書き込んだら、それはVBAですか?
もしそうなら、[マクロの記録]ボタンはなぜ[VisualBasicツールバー]にボタンがあるのでしょうか。マクロを編集しやすくするためでしょうか?

記録で
Range("A1").select
それを編集で
Range("A2").select
としたらVBA?

さらに最初っから
...続きを読む

Aベストアンサー

マクロという言語があるわけではないので
決まった処理を登録しておいて後で実行できる機能を
マクロと呼んでいるんじゃないですか?

そのマクロの情報をスクリプトとして保存しておきますので
そのスクリプトがVBAという事だと思いますが。

QエクセルVBAでセルにあるファイル名のファイルを同じくセルにあるフォルダ名のフォルダにコピー

お世話になります。
絶対パスがあり、コピー元、コピー先(格納先)としてシート上の操作で
ファイルをフォルダにコピーしたいのですが、VBAでできるでしょうか?

・B列B6以下にコピー元のファイル名(絶対パス)
・D6に格納先のフォルダ名(絶対パス)
があります。
この条件だけでコピー→格納するコードを教えていただけたら助かります。よろしくお願いします。

Aベストアンサー

またまた#1です。 (^o^)丿

同名ファイルがあるときは xxxx_01.jpg の形式の連番を付加して別名で保存する
のを考えてみました。(連番は Max10 まで)

ファイル名とコピー先のフォルダパス名にアンダースコア( _ )が付いていない
ことが条件です。

Sub Test2()
 Dim i, OldFile, OldName, FileExt, NewFile, NewName, n, Pos
 i = 6
 Do While Cells(i, 2) <> ""
  On Error Resume Next
  MkDir Cells(6, 4).Value  'コピー先に指定したフォルダがない場合は作成。
  OldFile = Cells(i, 2)
  OldName = Right(OldFile, Len(OldFile) - InStrRev(Cells(i, 2), "\") + 1)
  OldName = Left(OldName, InStrRev(OldName, ".") - 1)
  FileExt = Right(Cells(i, 2), Len(Cells(i, 2)) - InStrRev(Cells(i, 2), ".") + 1)
  NewFile = Cells(6, 4) & OldName & FileExt
  NewName = Left(NewFile, InStrRev(NewFile, ".") - 1)
  If Dir(NewFile) <> "" Then
   For n = 1 To 10
    Pos = InStrRev(NewName, "_")
    If Pos = 0 Then Pos = Len(NewName)
    NewFile = Left(NewName, Pos) & "_" & Format(n, "00") & FileExt
    If Dir(NewFile) = "" Then Exit For
   Next
  End If
  FileCopy OldFile, NewFile
  'Kill OldFile
  i = i + 1
 Loop
End Sub

またまた#1です。 (^o^)丿

同名ファイルがあるときは xxxx_01.jpg の形式の連番を付加して別名で保存する
のを考えてみました。(連番は Max10 まで)

ファイル名とコピー先のフォルダパス名にアンダースコア( _ )が付いていない
ことが条件です。

Sub Test2()
 Dim i, OldFile, OldName, FileExt, NewFile, NewName, n, Pos
 i = 6
 Do While Cells(i, 2) <> ""
  On Error Resume Next
  MkDir Cells(6, 4).Value  'コピー先に指定したフォルダがない場合は作成。
  OldFile =...続きを読む

QVBAとマクロの違い

こんばんは。エクセル初心者です。
VBAとマクロの違いについて教えてください。
VBAというのは、プログラミング言語のことで
よろしいのでしょうか?
そのVBAで記述されたものをマクロとよぶ
といったイメージでよろしいのでしょうか?

たとえば、あるエクセルにはいってるマクロを
実行する、ということを作業マニュアルに記述
する場合
「○○マクロを実行する」というのが
正しいのでしょうか?それとも
「VBAを実行する」というのが正しいのでしょうか?

まったく見当違いのご質問だったら申し訳ありません。
教えてください。

Aベストアンサー

「○○マクロを実行する」というほうが正しいです。

VBAは言語のことです。
マクロとは特定の操作手順をプログラムとして記述して自動化することです。

今回の場合、特定の処理なので「マクロ」という表現を使いましょう。

Q選択したセルの、画面最上行から1つ下のセルを選択

EXEL 2002 です。

任意に選択したセルの、画面最上行から1つ下(Rows.Count = 2)のセルを選択する場合のコードですが、
どうも解りません。

何卒、よろしくお願い致します。
-----------------------
Cells(2, Selection.Columns.Count).Select

Aベストアンサー

複数範囲の選択も考慮するんでしょうか?
単一セルでよいなら
ActiveSheet.Cells(2, Selection.Column).Select

QVBAとマクロの違い

VBA初心者です。
会社の人からVBAとマクロの違いについて質問され、ちゃんと説明できませんでした。
なにがちがうんでしょうか?
私は「VBAのプログラミング=マクロを組む」と思ってました。
よろしくお願いします。

Aベストアンサー

こんにちは。maruru01です。

Excel(2000)については、No.1の方の説明通り、
「マクロ = VBAというプログラミング言語で記述された一塊の動作」
です。
したがって、miyacさんの、
「VBAのプログラミング=マクロを組む」
で、おおよそあっています。
また、自分で書いたコードをマクロとして登録することも出来ます。
しかし、Access(2000)での"マクロ"は少しニュアンスが異なります。
Accessの場合は、マクロはいくつかの動作・操作は順に登録しておき、それを自動実行させる、という使い方です。自分で書いたコードをマクロとして登録するというやり方ではありません。(本当はそういうやり方も出来ますが。)
したがって、VBAとマクロは何となく別物のような印象を受けます。
それにAccessでは、「マクロを組む」という表現は通常使いません。
ただし、マクロをVBAに変換することが出来ますし、マクロに登録する各動作・操作も、VBAで自分で書くことが出来ます。
ですから、結局同じことなんですけどね。
まとめると、「マクロは自動実行処理を登録すること」で、「VBAはそのアプリケーションのあらゆる操作を記述すること」ですかね。
では。

こんにちは。maruru01です。

Excel(2000)については、No.1の方の説明通り、
「マクロ = VBAというプログラミング言語で記述された一塊の動作」
です。
したがって、miyacさんの、
「VBAのプログラミング=マクロを組む」
で、おおよそあっています。
また、自分で書いたコードをマクロとして登録することも出来ます。
しかし、Access(2000)での"マクロ"は少しニュアンスが異なります。
Accessの場合は、マクロはいくつかの動作・操作は順に登録しておき、それを自動実行させる、という使い方です。...続きを読む

QエクセルVBAセルの選択、挿入でズレた時に自動修正

エクセルのVBAで、セルA1を選択します

Sub Macro1()
Range("A1").Select
End Sub

別の作業でA列に1行挿入すると
自動的にセルB1を選択してくれないと困るのですが、どうすれば良いのですか?

Aベストアンサー

方法1:基本
セレクトしたいA1セルに、例えばシルシとして「ここ」と記入しておく

sub macro1()
cells.find("ここ").select
end sub
のようにシルシを探してそこを選ぶ

実際のシルシはあなたの実物のエクセルに応じて適切に自分で工夫する。




方法2:応用
セレクトしたいA1セルに、名前の定義で「ここ」という名前を定義しておく

sub macro2()
range("ここ").select
end sub
のように、そこを名指しで選択すればいつでもどこに行ってても選んでくれる。


人気Q&Aランキング

おすすめ情報