dポイントプレゼントキャンペーン実施中!

マクロについて詳しい方、ご教授ください。
現在、メールをクリックで送信できるシステムを作っています。
超初心者なので的外れな質問ご容赦ください。

メール送信には
http://www.fastclassinfo.com/entry/vba_gmail_sen …
上記サイトのものを使っています。

sheet1に数値を入力して、上記のモジュールを作動させるとうまく動きました。
sheet2にボタンを配置してクリックすると送信できるようにしたいのですが、sheet2のボタンが連動致しません。
ボタンは
http://brain.cc.kogakuin.ac.jp/~kanamaru/lecture …
を参考に作っています。

ボタンを押すと、50音リスト→人の名前→AまたはBを押すとメールが送信されるというシステムを目指しています。初心者にはハードルが高いのは重々承知ですが、詳しい方、御助力いただけたら嬉しいです。

A 回答 (1件)

こんにちは



>ボタンを押すと、50音リスト→人の名前→AまたはBを押すと
>メールが送信されるというシステムを目指しています。
現状がどのような形になっているのか、よくわかりませんが・・・

>sheet2のボタンが連動致しません。
ボタンを押した際のマクロを「新規作成」しているのでしょうか?
あるいは「メール送信のマクロ」を直接指定しているのでしょうか?
まぁ、今回のご質問の場合では、どちらのケースでも同じ原因で動作していないものと想像されます。

参考になさっている「メール送信」のマクロは送信に必要な情報(送信先、本文など)をアクティブシートから参照するようになっていますが、ご質問の状態を想像するに、アクティブシートはボタンのあるsheet2になっているものと思います。
この結果、マクロはSheet2のセル値を参照してしまうので、送信アドレスなどは正しい内容が取得できず、わけのわからない内容で送信を行うかあるいはエラーが発生することになっているものと想像します。

対処法としては、「メール送信」のマクロでシートを参照している箇所(例えば Range("~~").Value などとなっている部分)に対して、きちんと参照するシートを明示したセルの指定方法に変えれば良さそうに思います。

例えば、それぞれの該当箇所を
 Worksheets("Sheet1").Range("~~").Value
のように直しても良いですし、
一旦、 Set ws = Worksheets("Sheet1") のように変数に入れておいて
 ws.Range("~~").Value
のようにしても同様になります。

該当箇所が多いので、With構文を利用して
 With Worksheets("Sheet1")
   ・・・・・・・
   .Range("~~").Value
   ・・・・・・・
 End With
といった記述法でも良いでしょう。


いろいろと想像で回答していますので、修正等に手を付ける前に、まずこの推理が正しいかどうかを確かめる意味から、ひとまず、現状の「メール送信」マクロの最初に(Dim宣言の後ぐらいに)
 Worksheets("Sheet1").Activate
の1行を追加して、Sheet2のボタンを押して送信できるかどうかを確認してみるのが宜しいかと思います。
    • good
    • 0
この回答へのお礼

こんにちは

まさにのご指摘ありがとうございますm(_ _)m
一発で解決しました。
sheet1への移動で全て解決でした。

>ボタンを押すと、50音リスト→人の名前→AまたはBを押すと
>メールが送信されるというシステムを目指しています。
現状がどのような形になっているのか、よくわかりませんが・・・

こちらはまだできていません。
銀行の振り込みの時に、銀行を選択するシステムがあるかと思います。
例えば、「あ」を押すとあxxxxx銀行、あccccccc銀行などの感じです。
こういうようなシステムが作れればよいのですが。。。。

お礼日時:2018/04/06 16:09

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