お世話になります。
Excelのマクロについてお伺いしたいと思います。
現在Excelで経費精算書を作成していて、マクロ操作で精算書に入力した
データが作成履歴表に追加されるような作りにしたいと思っています。
ファイルの構造は3つのSeetがあり、(1)、(2)は精算書、(3)は作成履歴表
という作りになっています。
(1)、(2)に入力したそれぞれの金額や行先や顧客訪問時間等の情報を、
(3)の履歴表の最終行に追加するマクロを作りたいんですが、マクロは
ほとんど初心者の為どうしたらいいのかさっぱりわからなくて困り果て
ています。。。
どなたか教えていただけませんか?
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
というだけで、最初にコピーしたものが、貼り付けられます。
ご回答ありがとうございます。
教えて頂いた最終行の取り方と自動記録した内容を悪戦苦闘しながら組み合わせてみたらうまくデータが追加できました。
掲示板に質問を載せるのも初心者でしたので失礼があったらすみませんでした。やはりマクロを組むにはある程度勉強が必要なのですね。
地道に頑張ってみます。勧めて頂いた教本も見てみますね!
丁寧に色々と教えてくださってありがとうございました。
また何かありましたら宜しくお願いします!
No.4
- 回答日時:
ANo.2に補足です。
転記先を1行にまとめる場合であれば、作業用のシートを設けて、そこの一行に、
A B C
1 =Sheet1!A2 =Sheet1!C13 =Sheet2!B2
という様に式を入れて、データをまとめるようにしておけば、
その行を丸ごと複写するだけで済むので、話はすこぶる簡単になり、
自動記録も楽勝でしょう。ご参考まで。
補足回答ありがとうございます!
なるほどですね。確かにそれで最終行に複写する指示をすれば良いと言う訳ですね!それだったら初心者の私にも時間をかけずできそうです。
考え方を変えるだけで簡単にできることもあるんですね。
参考になりました!ありがとうございました!!
No.2
- 回答日時:
マクロの自動記録で、精算書の特定のセルを選択し、編集/コピーし、作成履歴表のシートに移って、転記範囲の列の先頭を選択後、End + ↓ で既存データの最終行にジャンプし、更に一行下った所に、形式を指定して貼り付け/値貼り付けを実行。
これを転記したい転記元のセル全てについて実行して記録すれば出来ないこともないかも知れません。
しかし、記録されたマクロの意味を理解して、手直しが出来るようになっていないと、精算書を少し変更するにも、延々と長い処理の自動記録のやり直しを余儀なくされてしまいます。
入門書を一冊購入して、自動記録された内容を見ながら勉強するのが、上達の近道だと思います。(上達すれば、コピー&ペーストなど行う必要が無い処理ですが、いきなりそこから始めるのは無理でしょう)
ご回答ありがとうございます。
なるほどですね。End+↓ですか、知らなかったです・・・
最終行の次の行を選択する方法がどうしてもわからなかったんです。
ありがとうございました!
色々な作業をマクロで組むにはやっぱりある程度のVBAは勉強しないと難しそうですね。頑張って勉強します。
また、何かありましたら宜しくお願いします!
No.1
- 回答日時:
初心者には敷居が高いですね。
そのレベルのことが簡単に組めるようになるまで数ヶ月かかりましたので。
まず、プログラムは組んだことがありますか?
Excel VBA 関数の使い方については、本が出ていますので、自分に合ったものを選んでみてください。
VBA 言語の解説書は無いようです。
VBA は、VB のサブセットですので、VB の本を購入して、BASIC 言語について理解し、その後、VBA にできることを探っていくしかありません。
言語が判りましたら、マクロを実行し、自分がやりたい処理を手で操作してみてください。VBA 言語に変換されます。
操作した内容と、変換された VBA 言語の対応が付くなら、すべての操作をする必要はありません。
変換された VBA は、操作内容を繰り返すだけのものですので、これを一般化するため、修正をしていきます。
この時、Excel VBA 関数の本が参考になります。
以上が大雑把なプログラミングの流れになります。
頑張ってみて下さい。
ご回答ありがとうございます。
プログラムについてですが、組んだことはありません。
マクロは実際に操作したものを登録したことはあるのですが、言語については理解不能状態です。。。
やっぱりマクロを組むのであれば、ある程度VBA言語についての理解が必要になってくるんですね。
教えていただいた方法でVBAの勉強頑張ってみます!
どうもありがとうございました。
また何かありましたら宜しくお願いします!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで数字を入れたら対応する...
-
エクセルで複数のシートのクリ...
-
Excelのシート上のShapeにイベ...
-
Excel VBAでのWorksheet_Change...
-
Excelのマクロ 検索範囲を広げ...
-
シート全体の絶対参照
-
長い時間かかるマクロが実行中...
-
エクセルVBAで実行中画面を...
-
セルの一部分だけを太字にする方法
-
エクセルで特定の行だけ行削除...
-
エクセルでランダムな座席表を...
-
EXCELのダイアログシートって、...
-
エクセル上にシェイプで二重丸...
-
エクセルファイルを開いた回数...
-
EXCEL 2010 チェックボックスで...
-
エクセルのセルの塗りつぶしシ...
-
エクセル シート内の一番下のセ...
-
EXCEL VBA で年間カレンダーを...
-
任意のセルに貼り付けをするマ...
-
「段」と「行」の違いがよくわ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでのWorksheet_Change...
-
エクセルで複数のシートのクリ...
-
Excelで数字を入れたら対応する...
-
エクセルファイルを開いた回数...
-
エクセルで特定の行だけ行削除...
-
Excelのシート上のShapeにイベ...
-
【エクセル】フリーワード検索...
-
エクセル シート内の一番下のセ...
-
長い時間かかるマクロが実行中...
-
【エクセル】「実行時エラー’10...
-
EXCELのダイアログシートって、...
-
Excelでセル内の文字をファイル...
-
エクセル:セル内の文字列の最...
-
マクロ1があります。 A1のセル...
-
エクセルのマクロ実行後にカー...
-
セルの一部分だけを太字にする方法
-
Excelのマクロ 検索範囲を広げ...
-
excelで画像のハイパーリンクを...
-
エクセル マクロ 一定時間おき...
-
シートではなくBOOK間で重複し...
おすすめ情報