• ベストアンサー

Excelマクロについて

お世話になります。 Excelのマクロについてお伺いしたいと思います。 現在Excelで経費精算書を作成していて、マクロ操作で精算書に入力した データが作成履歴表に追加されるような作りにしたいと思っています。 ファイルの構造は3つのSeetがあり、(1)、(2)は精算書、(3)は作成履歴表 という作りになっています。 (1)、(2)に入力したそれぞれの金額や行先や顧客訪問時間等の情報を、 (3)の履歴表の最終行に追加するマクロを作りたいんですが、マクロは ほとんど初心者の為どうしたらいいのかさっぱりわからなくて困り果て ています。。。 どなたか教えていただけませんか?

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 質問は、具体性がないと、話が進まないのです。 当面、記録マクロから始めていただくのがよいですね。誰も、そこからのスタートです。 私は、ここでは、マクロの回答を中心に書いている者ですが、せっかく書いていただいた#1さんのお話で、この時代になって、Visual Basic(VB6)を勉強するというのは、不可能に近いです。VB.Net のプログラミング言語は、無料で手に入りますが、似ているようで、まったく異質の言語です。現在のExcel VBAには、ほとんど役に立ちません。 Excel VBAは、やはり、ワークシートや一般の関数が分かっていないと、プログラミングが分かっても、実務上は手がつけられないはずです。 誰でも、最初はあります。また、VBAが詳しくない人でも、上手に質問することで、満足した回答を得ているのですから、あまり、最初から無理と考えることはないと思います。質問の仕方の問題なんですね。 まったく分かりませんから、最初から教えてください、というのは、掲示板では好まれません。最低限、マクロの登録の仕方、動かし方、VBEの使い方など、1週間も掛からずに覚えられるようなことを抜きにしては、質問しても、回答はしにくいのです。 教本は、技術評論社『かんたんプログラミング ExcelVBA』大村あつし さんのがよいです。 ただ、細かすぎるのがちょっと気になります。飛ばし読みでよいと思います。 たとえば、最終行の取り方というのは、 A列の最終セル Range("A65536").End(xlUp).Select A列の最終セルのその次の行 Range("A65536").End(xlUp).Offset(1,0 ).Select *Excel2003までの、全行が、65536行までの場合。 >(1)、(2)に入力したそれぞれの金額や行先や顧客訪問時間等の情報を、 たとえば、(以下は、標準モジュールを使います) Sub Test1() Range("A2:D2").Copy Sheet2.Select Range("A65536").End(xlUp).Offset(1,0 ).Select Activesheet.Paste End Sub というだけで、最初にコピーしたものが、貼り付けられます。

eeehhh510
質問者

お礼

ご回答ありがとうございます。 教えて頂いた最終行の取り方と自動記録した内容を悪戦苦闘しながら組み合わせてみたらうまくデータが追加できました。 掲示板に質問を載せるのも初心者でしたので失礼があったらすみませんでした。やはりマクロを組むにはある程度勉強が必要なのですね。 地道に頑張ってみます。勧めて頂いた教本も見てみますね! 丁寧に色々と教えてくださってありがとうございました。 また何かありましたら宜しくお願いします!

その他の回答 (3)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.4

ANo.2に補足です。 転記先を1行にまとめる場合であれば、作業用のシートを設けて、そこの一行に、     A       B         C 1 =Sheet1!A2 =Sheet1!C13 =Sheet2!B2 という様に式を入れて、データをまとめるようにしておけば、 その行を丸ごと複写するだけで済むので、話はすこぶる簡単になり、 自動記録も楽勝でしょう。ご参考まで。

eeehhh510
質問者

お礼

補足回答ありがとうございます! なるほどですね。確かにそれで最終行に複写する指示をすれば良いと言う訳ですね!それだったら初心者の私にも時間をかけずできそうです。 考え方を変えるだけで簡単にできることもあるんですね。 参考になりました!ありがとうございました!!

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

マクロの自動記録で、精算書の特定のセルを選択し、編集/コピーし、作成履歴表のシートに移って、転記範囲の列の先頭を選択後、End + ↓ で既存データの最終行にジャンプし、更に一行下った所に、形式を指定して貼り付け/値貼り付けを実行。 これを転記したい転記元のセル全てについて実行して記録すれば出来ないこともないかも知れません。 しかし、記録されたマクロの意味を理解して、手直しが出来るようになっていないと、精算書を少し変更するにも、延々と長い処理の自動記録のやり直しを余儀なくされてしまいます。 入門書を一冊購入して、自動記録された内容を見ながら勉強するのが、上達の近道だと思います。(上達すれば、コピー&ペーストなど行う必要が無い処理ですが、いきなりそこから始めるのは無理でしょう)

eeehhh510
質問者

お礼

ご回答ありがとうございます。 なるほどですね。End+↓ですか、知らなかったです・・・ 最終行の次の行を選択する方法がどうしてもわからなかったんです。 ありがとうございました! 色々な作業をマクロで組むにはやっぱりある程度のVBAは勉強しないと難しそうですね。頑張って勉強します。 また、何かありましたら宜しくお願いします!

  • s_saike
  • ベストアンサー率46% (36/77)
回答No.1

初心者には敷居が高いですね。 そのレベルのことが簡単に組めるようになるまで数ヶ月かかりましたので。 まず、プログラムは組んだことがありますか? Excel VBA 関数の使い方については、本が出ていますので、自分に合ったものを選んでみてください。 VBA 言語の解説書は無いようです。 VBA は、VB のサブセットですので、VB の本を購入して、BASIC 言語について理解し、その後、VBA にできることを探っていくしかありません。 言語が判りましたら、マクロを実行し、自分がやりたい処理を手で操作してみてください。VBA 言語に変換されます。 操作した内容と、変換された VBA 言語の対応が付くなら、すべての操作をする必要はありません。 変換された VBA は、操作内容を繰り返すだけのものですので、これを一般化するため、修正をしていきます。 この時、Excel VBA 関数の本が参考になります。 以上が大雑把なプログラミングの流れになります。 頑張ってみて下さい。

eeehhh510
質問者

お礼

ご回答ありがとうございます。 プログラムについてですが、組んだことはありません。 マクロは実際に操作したものを登録したことはあるのですが、言語については理解不能状態です。。。 やっぱりマクロを組むのであれば、ある程度VBA言語についての理解が必要になってくるんですね。 教えていただいた方法でVBAの勉強頑張ってみます! どうもありがとうございました。 また何かありましたら宜しくお願いします!!

関連するQ&A

  • エクセル関数で対象日を抽出することは可能ですか?

    会議出席者に交通費を支払う為、明細表を作成することになりました。 SEET1に今までの出席DATAを入力しています。明細表はSEET2に作成するつもりです。 今後、効率よく作成できるように、SEET1のDATAを反映させた明細表を作りたいと思っており、 出席された対象日を抽出する関数を探しているのですが、分かりません(>_<) 調べているとマクロやVBAという言葉がたくさん出てきたのですが、全く使えません。 SEET1には下記のようにDATA入力しています。            4/1     5/1   6/1       K男   ○     ○         A子     ○      ○   出席された日には○、欠席された日には何も入力していません。 SEET2に出席があった日のみを抽出できる方法があれば、教えてください! 分かりにくい説明ですが、よろしくお願いします。

  • エクセルマクロによる顧客リスト検索

     エクセルで作成している顧客リストの検索をするマクロを作成したいと考えています。具体的には、ユーザーフォームに顧客名・勤務先・役職のテキストボックスを作り、顧客名を入力してコマンドボタンを押すと勤務先などがテキストボックスに表示されるものを作ろうとしています。  ユーザーフォームにテキストボックスやコマンドボタンを作る方法はわかりましたが、それらを顧客リストと結び付ける方法がわかりません。ネットで「エクセルマクロ講座」を探してみましたが、こうした事例にあてはまる講座もみつかりませんでした。  どなたかマクロに詳しい方は教えていただけないでしょうか。あるは上記の事例にあてはまるエクセルマクロの講座がWeb上にあれば、それを教えていただけないでしょうか。

  • EXCELのマクロでデータをクリアしたい

    仕事でエクセルのマクロを使ってリストを作る作業があるのですが、行き詰まりました。どなたか助けて下さい。お願いします。 表を作るのには二つのマクロを使っています。 【一つめのマクロ】 1.定形のウェブページからテキストをコピーする    内容は商品名や商品番号や数量です 2.エクセルの一番左上に貼り付ける 3.するとマクロが働いて貼り付けたデータはseet1に保存されて自動的に新しいシートが用意される 4.新しいシートに別のデータで1.2.を繰り返す この作業は9回まで繰り返し、一旦エクセルを閉じます。 次に再びエクセルで 【二つ目のマクロ】を立ち上げ、現れた『リスト作成』ボタンを押すと自動的に完成の表が作られます。 最初はこの方法で快調だったのですが、行き詰まりました。 ・行き詰まりその1 一つめのマクロで九つまでコピーペーストするのをくり返して、二つ目のマクロを使うと今までのデータをすべて反映して表が作られてしまいます。うまく説明できないのですが、例えば 月曜にコピーペーストして表完成。 火曜に別のデータでコピーペーストして表を完成させると、必要ない月曜のデータも含めて表が出来てしまう。 これが一つめの困りです。 ・行き詰まりその2 二つ目の困りは、ある日別の社員が一つめのマクロを使ってコピーペーストしていたところ、誤って9つ以上シートを作ってしまったらしく、作りすぎたシートを削除しました。 そうしたらフリーズしたので、再起動してやり直ししたら、そのマクロのファイルを開くたびに、上記の失敗が現れてそれ以上のデータが作ることができなくなりました。(2つめのマクロを動かすと失敗データが上書きされるのみです) 快調な時は表が完成すると、一つめのマクロでは何のデータも残りませんでした。 このような稚拙な説明しか出来ないのですが、どなたかご教授下さい

  • エクセルマクロについて

    お世話になります。 エクセルのマクロについて不慣れなためご質問させてください。 下のような表がありこれを集計して新しく表にしなおしたいと思っています。 1列目 2列目 A    XXXX B    XXXX C    XXXX A    XXXX A    XXXX B    XXXX 1列目の同じ文字列を数えて表を作りなおしたいのです。 1列目  2列目 A     3   ←数えた回数を入れたいと思います B     2 C     1 初めの表はマクロで作成出来たのですが2つめの表を作成する エクセルマクロを作成したいと思っています。 サンプルを頂けると助かります。

  • エクセルでの指定抽出の仕方を教えてください。

    いつもお世話になっております。 エクセルを操作して表作成をしていた所、どうしても分からないことが出てきてしまったので教えて頂きたく投稿させて頂きました。 まず、前提として大量のデータがあります。 そのデータは顧客毎に購入履歴が記入されているような感じなのですが、 顧客名の右側から、古い記録順に日付を入れているのです。 なにせ顧客名だけでもすごい量なので、 上部の人が知りたい顧客のものだけを早く見たいと言うのです。 それを実現すべく、その顧客名を入力するとその顧客のデータのみ出てくる表を作成しているのです。(印刷用にです) さすがに過去全てをさかのぼって全部の購入履歴(日付)が出てくるようにしなくてもいいらしくて、 過去20件程度の日付が見られれば良いそうです。 でも、データは常に新しく追加されていきますし・・・ 追加されたものも常に入れながら最新20件程の日付を、顧客名を入力すると表示できる方法ってありませんか? もう頭が飽和状態で困ってます。 助言よろしくお願いします。

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

    エクセルのマクロについて 私は残念ながら‥マクロをくんだことはないのですが、他の方がくんだマクロの表に入力をする際、必ず マクロを有効にするか、無効にするかのメッセージがでてきますが、この意味はなんでしょうか? 『無効にしなさい』と教えられたので、そうしていますが、別の会社では『有効にしなさい』と教えられ、何も考えずにそのとおりにしておりました。 どうぞ宜しくお願いします。

  • エクセルのマクロを知りたい

    エクセルで,たくさんのデータが入力された【シートa】があります。 新しく【シートb】を作成して,そこに空白の表(1)~(10)までを作成します。 (ちなみに表(1)は1行から始まり100行まで,表(2)は101行から始まり200行まで・・・・といった感じです) 【シートb】の表(1)には,【シートa】でA列に「1」が入力されているデータを抽出して,それをB列の昇順に並べて記入しなさい。同様に,表(2)には,【シートa】でA列に「2」が入力されているデータを抽出して,それをB列の昇順に並べて記入しなさい。・・・というのを表(10)まで続けます。 上記のような命令をボタン一つで操作できるようなマクロを教えて欲しいのです。 お願いします。

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

    エクセル2003でマクロ記録を使い野球成績表を作成して使っております。今回エクセル2007に変更しましたが野球成績表のマクロ が働きません。内容はチーム勝率を自動計算し順位をつけています エクセル2003での保存時の問題なのか、エクセル2007での 操作上の問題なのか解りません。何かヒントを頂けませんか よろしくお願いいたします。

  • Excelのマクロについて

    現在、Excelのシートで野球の成績表を作成しているのですが、 フォーマットを変えようと思っています。そこで まず、表紙画面からチームの成績が書いてあるExcelファイルを選択し これをマクロで新しいフォーマットのExcelファイルに変換します。 ここで新しく作成したExcelファイルにもマクロをつけたいんですけど その場合どうすればよいでしょうか? 宜しくお願いします。

  • エクセルのマクロでこういったことはできますでしょうか。

    顧客管理で下記のようなことがしたいと思っています。 マクロ初心者なのですが、こういったことは可能でしょうか。 (1)事前に、顧客管理のデータ入力用ファイル(以下データファイル)、A、B、C、D、Eという定型ファイルを作成しておく。A~Eには、全て複数のシートが入っており、シート1にデータファイルに入力した情報が飛ぶようにしたい。 (2)データファイルに顧客情報「あ」を入力し、シート上に作成しておいたAという名のマクロボタンを押すと、Aのファイルのシート1に「あ」という情報が飛び、さらに、Aファイルは原本なので、“「あ」A”という名前の新しいファイルを作成できるようにしたい。 (3)同じように、データファイルに顧客情報「い」を入力して、今度はBというボタンを押したら、Bファイルのシート1に「い」という情報が飛び、“「い」B”という名前のファイルが新しく作成できるようにしたい。 非常にわかりにくい説明で申し訳ないのですが、これから自分でマクロやVBEを勉強しようと思っており、実際こういったことが可能なのかどうか、ご教示頂けますと幸甚です。何卒よろしくお願い致します。

専門家に質問してみよう