• ベストアンサー

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

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

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

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

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

tomo1944
質問者

お礼

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

その他の回答 (3)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答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/7940)
回答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

  • マクロお願いします。

    A B C D E F G 日付 担当者 コード 顧客名 他 入金status  上記、入金status欄に、「入金済」という文字があり、それ以外は日付が入っています。この「入金済」と書いてある行を削除するマクロを組みたいと思っているのですが、まだ未熟なのでご助力のほどお願いします。 途中までですが、 sub リスト() dim 行 for 行=1 to 1000 if cells(行、6)="過入金"then ここからがわかりません。 end if next 行 end sub

  • エクセル2007 マクロの勉強

    マクロを勉強しようとしています。 開いたシートで決まったところに本日日付(平成24年3月11日)と曜日を入れたいと思いマクロの記録でやってみましたがこれだといつも3月11日と入るのではないでしょうか? Sub Macro4() '本日日付と曜日を入れたい Range("A7:D7").Select ActiveCell.FormulaR1C1 = "3/11/2012" Range("E7").Select   'ここで曜日を入れたい End Sub よろしくお願いいたします。

  • エクセルマクロのダイヤログボックス(ツールバー)が表示されない

     エクセル2003,2000を共にパソコンにインストールをしてあり、新しいマクロの記録をしたいのですが、以前はマクロ記録開始時に表示されていた記録終了、相対参照記録用のツールバー(四角いボックス)が表示されなくなりました。  相対参照にて記録したいので表示されず困っています。  以前にマクロ記録の失敗を繰り返していて、色々、触りまくったのが原因だと思います。何故このようになったのか良く理解できません。  エクセル2003,2000もともに表示されるはずですが出て来ません。どうすれば表示できるのでしょうか? それと開いているすべてのブックにマクロを適用したいと思い、PERSONAL.XLSで保存していますが、同一の書式構成のシートで日付違いのブックに個人用マクロを実行するとエラーがでます。  この場合、その日付のシート名も記録されているからなんでしょうか?日付の如何に関わらず、マクロを実行し、自動化したいのですが、上手く行きません。  記録手順が悪い?のでしょうか?独学見よう見まねでやっているもので、基本が十分認識できてないままやっています。他のブックからセル範囲を貼り付けたりする内容なので、記録順序が狂っているかもしれません。詳しい方がおられましたらご連絡お願いします。

  •  エクセルマクロでこれを簡単に出来ますか?

     部材関係の仕事に携わっている者ですが、日々変る納品リストの整理が長引き、もっと簡単にしたいと思いますが、次のことをエクセルマクロで瞬時にできるのでしょうか?私はエクセル初心者な者で詳しいことが分かりません。  1.エクセルワークシートが15部の構成のブック  2.その内、自分が必要とするのが5部のシート  3.その各シートには2005.6.○○と日付が付与され   ている  4.その5部のワークシートに記載されている部材うち、自分に関係する物だけをフィルタオプションを使って抽出、抜き出している。  5.フィルタオプションの抽出条件は別ファイルを開き、コピー、貼付けして検索している。  6.各シート検索後、抽出データーを1枚のシートにまとめるために統合機能を使い、1つのリストにしている。  7.日付により、項目が増減、変動するので多くなると1ページに印刷すると、文字が小さくなるので、目一杯縦横の余白を最小にして印刷している。  以上のような流れなのですが、元になるワークシートのシート名に日付が付与されているせいか、マクロを記録してもエラーが出ます。やはり単純なマクロの記録では1~7の操作実行は無理なのでしょうか?  手順はいつもと同じなのですが、シート日付名をそのまま記録してしまうからでしょうか?  現状1~5までの操作を各シート毎に繰り返しているので非常に時間が係ります。VBAじゃないと無理なのでしょうか?個人用マクロに保存しています。アドバイスお願いします。

  • マクロ(Excel)で伝票入力

    はじめてのマクロ挑戦で頓挫しています。 「伝票入力」を作成しマクロの記録で作成しましたがうまく動きません。 以下のマクロをご指導頂けないでしょうか。 ---------------------------------------------------------- セルE6(得意先コード)入力 セルC16(日付)入力 セルD16(品名コード)入力 セルF16({数量}入力 セルI16(適用)入力 以上 セルC16~セルI16を入力後、1行下がりながら (2行目C17~I17、3行目C18~i18・・・・と6回繰り返し)後 セルH25(前回請求額)入力 セルH26(前回入金)入力 以上でまたセルE6で入力待ちになる。 -------------------------------------------------------------- 以上の内容でご理解して頂けるか心配ですがよろしくお願い致します。 (使用バージョン2003)

  • 行コピーして、今日の日付の行に貼り付けるマクロ

    こんにちは、エクセルマクロについて、助けて頂きたく質問させていただきました。 添付しました画像のような表があり、 セルA2に「=TODAY()」が入っていて、セルB2から右は別シートのデータを参照しています。 マクロを実行すると、2行目を行コピーし、セルA3以下の日付からセルA2の日付(今日の日付)を探し出して、行貼り付けしてほしいです。 行コピーや値で貼り付けはマクロの記録を使って、詳しくない私でもなんとか作ることはできるのですが、 今日の日付を探し出して、そこに貼り付ける。というマクロは作れませんでした・・・。 お助け下さい、宜しくお願いします! ※補足します セルA2の今日の日付は便宜上入力しているだけです。無い方がマクロを組みやすいのなら、無くせます。

  • ピボットテーブルのマクロについて

    会社で各営業支店のデータを集計する際、ピボットテーブルを使っています。毎回同じ作業なのでマクロの記録をしてみたのですが上手くできずに困っています。 各列に支店名、日付、商品名、数量のデータがあります。それを表に左に商品名、上に日付、右下に数量、一番上の欄に支店名が来るようにするにはどのように書けばよい教えて頂けませんでしょうか。 よろしくお願いします。

  • 受付一覧表に詳細入力した時の日付を自動補充したい

    不規則に発生する依頼をエクセルの受付一覧(受付日、担当者、内容)に記録する際に担当者を入力したら受付日に当日を自動セットさせたいのです。 ・日付欄に「IF(担当者<>"",TODAY(),)」では1)ファイルを開く度に今日の日付になってしまう。2)担当者が空白のとき1900/1/0になってしまう。 ・一度日付が入ったら変わらないようにしたいと思い IF(日付<>"を前につけると循環参照でエラーになってしまう。 かといって各行に日付セットのマクロボタンを設けるのも大仰だし・・・。 この2点をどうしたら良いでしょうか。 お知恵をお貸しください。

  • エクセルのマクロの記録について

    こんばんわ。マクロの超初心者ですが、 最終的に、デフォルトの大きさのセルを、ボタンを押して自動で A1=行高 100 A2=行高 200 A3=行高 300 B1~B3は、結合 で完成となる物を作ろうとしています。(列幅は、考えない物としています) 手順として、マクロの記録をスタートして (1)1行目の行高を100にする (2)2行目の行高を200にする (3)3行目の行高を300にする (4)B1~B3を結合する で記録を終了します。そして再生をするのですが、A1~A3の行高がきちんと設定どおりになってくれません。 一応、行高を確認すると、3つとも、200になっています。どうも、100+200+300の合計の平均の行高に設定されてしまいます。 自分なりに考えて、B1~B3の結合のせいかなと思い、なら、セルの結合をマクロの記録から外してやってみました。 (1)あらかじめ、B1~B3を結合させておく (2)マクロの記録スタート (3)1行目、2行目、3行目をそれぞれ設定する で記録終了して、再生させるのですが、やっぱり同じ結果になってしまいます。 これは、エクセルの仕様なのでしょうか?それともなにか対処方があるのでしょうか? 一応、マクロの編集も少しは、がんばってこの2週間でちょっとだけは、できるようになったようなので(かなり怪しいですが・・・) どなたかアドバイスございましたら、お願いいたします。

  • マクロでタイムレコーダーを作りたいのですが・・

    マクロを使ってタイムレコーダーを作っています (マクロの勉強用です) ユーザーフォームで社員コードを入力し、出社をクリックすると エクセルシートに記録されるようにしたいのですが、どのように書けばいいか わかりません。 フォームにテキストボックスを作り、下に出社ボタンを作りました。 テキストボックスに数字を入力し、出社ボタンを押すというのが手順 なのですが、 社員コードから「どこに出社時刻を入力すればよいか」を判断させ、 ボタンを押した時刻を入力できるようにしたいです。 手順として、社員コードを入力し、出社ボタンを押すと、エクセルシートを 検索し、合致する社員コードを見つけ、見つかったらそこの列の今日の日付の 部分に時刻を入力・・となるのかな?と思うのですが。。 はっきりいってさっぱりです。。ご存知の方、ご教授ください。

専門家に質問してみよう