天使と悪魔選手権

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

A 回答 (4件)

こんばんは。



質問は、具体性がないと、話が進まないのです。

当面、記録マクロから始めていただくのがよいですね。誰も、そこからのスタートです。

私は、ここでは、マクロの回答を中心に書いている者ですが、せっかく書いていただいた#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
というだけで、最初にコピーしたものが、貼り付けられます。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
教えて頂いた最終行の取り方と自動記録した内容を悪戦苦闘しながら組み合わせてみたらうまくデータが追加できました。

掲示板に質問を載せるのも初心者でしたので失礼があったらすみませんでした。やはりマクロを組むにはある程度勉強が必要なのですね。
地道に頑張ってみます。勧めて頂いた教本も見てみますね!

丁寧に色々と教えてくださってありがとうございました。
また何かありましたら宜しくお願いします!

お礼日時:2007/11/09 00:20

ANo.2に補足です。


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

補足回答ありがとうございます!

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

お礼日時:2007/11/09 00:28

マクロの自動記録で、精算書の特定のセルを選択し、編集/コピーし、作成履歴表のシートに移って、転記範囲の列の先頭を選択後、End + ↓ で既存データの最終行にジャンプし、更に一行下った所に、形式を指定して貼り付け/値貼り付けを実行。


これを転記したい転記元のセル全てについて実行して記録すれば出来ないこともないかも知れません。
しかし、記録されたマクロの意味を理解して、手直しが出来るようになっていないと、精算書を少し変更するにも、延々と長い処理の自動記録のやり直しを余儀なくされてしまいます。
入門書を一冊購入して、自動記録された内容を見ながら勉強するのが、上達の近道だと思います。(上達すれば、コピー&ペーストなど行う必要が無い処理ですが、いきなりそこから始めるのは無理でしょう)
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/11/09 00:06

初心者には敷居が高いですね。



そのレベルのことが簡単に組めるようになるまで数ヶ月かかりましたので。

まず、プログラムは組んだことがありますか?
Excel VBA 関数の使い方については、本が出ていますので、自分に合ったものを選んでみてください。

VBA 言語の解説書は無いようです。
VBA は、VB のサブセットですので、VB の本を購入して、BASIC 言語について理解し、その後、VBA にできることを探っていくしかありません。

言語が判りましたら、マクロを実行し、自分がやりたい処理を手で操作してみてください。VBA 言語に変換されます。

操作した内容と、変換された VBA 言語の対応が付くなら、すべての操作をする必要はありません。

変換された VBA は、操作内容を繰り返すだけのものですので、これを一般化するため、修正をしていきます。
この時、Excel VBA 関数の本が参考になります。

以上が大雑把なプログラミングの流れになります。
頑張ってみて下さい。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

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

どうもありがとうございました。
また何かありましたら宜しくお願いします!!

お礼日時:2007/11/08 00:05

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