• ベストアンサー

Excel2003でマクロ操作教えてください。

マクロ初心者です。 Excel2003でのマクロ操作でどう記録すればいいのかアドバイスお願いいします。 図面を添付します(Ver2007なのは無視してください) 入金完了者の受付番号(1~4)をクリックしてマクロを実行すると入金状況欄 に [入金] と赤字の文字が入力され、また同時に 入金日欄 に本日の日付が 自動的に入るようにマクロを記録させたいのですが どうマクロをくめばいいのでしょうか? 具体的な手順アドバイスお願いします

質問者が選んだベストアンサー

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.4

>マクロ登録する際に絶対参照か、相対参照にするか、問いがあり 学校での課題か何かでしょうか? その場合は、ご自分で教科書などを読み直して学習することをお勧めしますが、折角ですので簡単な手順だけを提示します。 ご質問は「マクロの記録」で対応する場合のことのようですので、このようなケースではマクロの記録の記録終了「相対参照」で記録する機能を利用する必要があります。 >入金完了者の受付番号(1~4)をクリックしてマクロを実行すると入金状況欄 に[入金] と赤字の文字が入力され、また同時に 入金日欄 に本日の日付が自動的に入るようにマクロを記録させたいのですが これまでのいきさつから判断すると、ご質問はおそらく受付番号を「クリック」ではなく、正確には「選択」してマクロを実行したときの操作だと思われます。 具体的には以下のような操作でマクロの記録操作を行うことになります。 準備として、受付番号の1つを選択しておき、「ツール」「マクロ」「新しいマクロの記録」で適当な名前を付け、記録終了ツールバー(表示されない場合は「表示」「ツールバー」から「記録終了」を選択)の右側の「相対参照」のアイコンをクリックしてから操作を開始します。 相対参照で記録のまま、入金状況欄 を選択して「入金」 と入力してそのフォントを赤にして、さらに 入金日欄 に本日の日付を入力し「記録終了」ボタンをクリックします。 これで、番号を選択して、上記のマクロを実行すると、対応するセルに「入金」と今日の日付が入力されますが、このままでは明日になっても同じ日付が入力されてしまうことになります。 これを解決するには、Alt+F11でこの記録マクロのコードをみて、日付が入力されている日付部分を「Date」に変更すれば、最終的にご希望のマクロコードを作成することができます。

tomo1944
質問者

お礼

最終的に、こちらの回答で納得できました! クリックと選択でかなり変わってしまうのにビックリしましたが こちらが私が求めていた回答です。 ありがとうございました!

その他の回答 (3)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

>マクロ登録する際に絶対参照か、 >相対参照にするか、問いがあり はて??? それは回答でお話しした段取りを、「しっかりご自分のエクセルで実際に試してみた」その上でのご質問ですか? それともまだ試してもいないのに、思い付きでちょっと聞いてみたご質問でしょうか。 再掲: >受付番号を「Wクリックする」とマクロが起動する。 任意の受付番号セルをWクリックする事で、自動的にその行に赤文字と日付が記入されます。 その意味では、回答したマクロは「相対参照的」にちゃんと作動します。 なお、言わずもがなですが、あなたの「実際のエクセル」がご相談に掲示された画像とは「違う配置」だった場合は、当然実際のあなたのエクセルの「どこ列どこ番地のセルが受付番号で、どこ列に赤文字や日付を記入したいのか」といった部分に合うようご自分でマクロを修正して、ご利用いただかなきゃいけません。 でも追加ご質問は、上述にご説明した通りキチンと手を動かして動作確認していればそういうご質問にはならないと思いますので、いったいどういう意図でそういうご質問になったのか大変不思議です。

tomo1944
質問者

お礼

丁寧な回答に感謝しています。 自分の記載の仕方で迷惑かけましたが 勉強になりました。 ありがとうございました!

tomo1944
質問者

補足

まだ実際には作成してはおりませんでしたので 大変お手数お掛けしました。 補足の意図はただ絶対参照とは何か? 相対参照とは何か?という基本的な事を 知りたかっただけなのでご理解ください。 元々はこの画像でこのようにに設定するには 絶対参照で作るべきか?相対参照で作るべきか? という設問であって、作り方自体は自分なり に興味があって質問させていただきました。

  • 374649
  • ベストアンサー率38% (203/527)
回答No.2

日付を適当なセルに入れてください、仮にセル"A1"に"=TODAY()"を入れ今日の日付を取得します。 Sub 書込() Dim RowNo As Long Dim ColNo As Long RowNo = ActiveCell.Row ColNo = ActiveCell.Column If ColNo <> 1 Then MsgBox "カーソルの位置が違います !!" Exit Sub End If If Cells(RowNo, "E") <> "" Then MsgBox "記録済みです !!" Exit Sub End If With Cells(RowNo, "F") .NumberFormatLocal = "yyyy/m/d;@" End With Cells(RowNo, "E") = Cells(1, 2) Cells(RowNo, "F") = Cells(1, 1) End Sub この場合"入金"も適当なセルに入れておけばその値を変えるだけで変化するので融通がききます。 "A2"に"入金"と入れておけば Cells(RowNo, "E") = cells(1.2) になります。 マクロを組むときはただ組むだけでなく必ず誤操作をしないようエラーチェックを組み込むことが大事です。

tomo1944
質問者

お礼

丁寧な回答ありがとうございました! 大変勉強になりました!

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

シート名タブを右クリックしてコードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub Worksheet_BeforeDoubleClick(byval Target as excel.range, Cancel as boolean)  if application.intersect(target, range("A6:A10")) is nothing then exit sub  cancel = true  if application.counta(target.offset(0, 1).resize(1, 3)) <> 3 then   msgbox "FILL IN DATA"   exit sub  end if  cells(target.row, "E") = "入金"  cells(target.row, "E").font.color = vbred  cells(target.row, "F") = date end sub 終了してエクセルに戻る 受付番号を「Wクリックする」とマクロが起動する。

tomo1944
質問者

補足

回答ありがとうございます。 また、マクロ登録する際に絶対参照か、 相対参照にするか、問いがあり、このセルデータ の場合は、どういう違いが出てくるのでしょうか?

関連するQ&A