• ベストアンサー

マクロ(Excel)で伝票入力

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

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

  • ベストアンサー
  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.2

>下記のエラーメッセージが表示され実行出来ませんでした すいません、行が長すぎてうまく行かなかったようです これならどうでしょう? Sub Macro() MyRange = "C16:D16,F16,I16,C17:D17,F17,I17,C18:D18,F18,I18,C19:D19,F19,I19,C20:D20,F20,I20,C21:D21,F21,I21,H25:H26,E6" Range(MyRange).Select Range("E6").Activate End Sub

Raifuku
質問者

お礼

度々ご面倒をお掛けして申し訳ありませんでした。 お陰様で希望通りの動きをする事が出来ました。 内容も分かり易く今後の参考にもなります。 本当にありがとうございました。

その他の回答 (2)

  • 2koma2
  • ベストアンサー率0% (0/1)
回答No.3

勝手な判断ですが、初心者と見てよろしいでしょうか? 初心者と見て話を進めます。 まず、マクロとVBAとは全く性質が異なります。 マクロは単純にユーザーの動作を模倣するだけです。 例えば「A1に『ジュース』と入力しB1に移動する」と言う 動作をすれば、その通りの行動を行います。 貴殿の質問でマクロでは無理ではないかと思われるところ があります。 それは、 >>(2行目C17~I17、3行目C18~i18・・・・ という ところです。 この場合自動で次の行に移動する場合、「条件分岐」が必要になります。 マクロの中に条件分岐はできませんので、無理であると言うことです。 また、 >>以上でまたセルE6で入力待ちになる。 も同じく条件分岐が必要であると思いますので、恐らく無理であると 思います。 マクロとVBAの性質をもう少しネットでググッて見たほうが 貴殿の為にもなると思います。 但し、VBAで作れと言うならば簡単です。 がんばってください。

Raifuku
質問者

お礼

 大変貴重なお話ありがとうございました。 お察しの通りEXCELは一部の関数利用程度の初心者です。  ご指示の様にのようにマクロとVBAを混同して理解?しておりました。 「マクロの記録」で記録された内容をVBAで修正する。または「初めからVBAで作成」すると考えて宜しいのでしょうか。  確かに「マクロの記録」では条件分岐(例えば3行目以降入力がいらない場合はセルH21へ移動等など)はどうするのだろうと漠然と考えていました。  今回の質問は「BVAで伝票…」とするべきでした。 この度は大変勉強になりました。 ありがとうございました。

  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.1

Sub Macro()   Range( _  "C16:D16,F16,I16,C17:D17,F17,I17,C18:D18,F18,I18,C19:D19,F19,I19,C20:D20,F20,I20,C21:D21,F21,I21,H25:H26,E6" _    ).Select   Range("E6").Activate End Sub このマクロを Ctrl+Q などに登録しておきます データーを入力したらセル移動は「Tab」キーで行います

Raifuku
質問者

補足

早速のご指導ありがとうございました。 早速新規にマクロへコピーしトライしてみましたが、下記のエラーメッセージが表示され実行出来ませんでした。 2行目の Range ~ Select 間が選択され コンパイルエラー(構文エラー) 何か小生の操作に間違いがあるのでしょうか。 お時間がありましたら再度ご指導頂けたら幸いです。

関連するQ&A

  • 【Excel VBA】ThisWorkbook モジュールのマクロ

    Excel2003を使用しています。 39枚のシートから成るBook1のThisWorkbook モジュールに、C列に“○月計”と入力されたら、その行のE列、F列、G列へ数式を入力するコードを書いています。 現在は、それぞれのシート(39枚のシートのうち3枚を除く36枚)のC列最終行から2行下のセルへ“○月計”と手入力していますが、マクロで“○月計”と入力されるようにすれば、ThisWorkbook モジュールに書いているコードも実行されて、数式の入力までマクロで処理できるのかな?と思い、試しに、36枚それぞれシートのC列最終行から2行下のセルへ“○月計”と入力されるようコードを書いてみました。 …が、そうではないのか、それぞれのシートのC列最終行から2行下のセルへ“○月計”と入力されるものの、E列、F列、G列へ数式は入力されません。 せっかくなので、できることなら数式の入力までマクロで処理したいのですが、どのようにしたらThisWorkbook モジュールに書いているコードまで実行されるのでしょうか? よろしくお願いします。

  • マクロの条件別分岐について

    集計表のマクロを作成しています。 その際に条件によって、使用するマクロを使い分けたいと思っていますが上手くいきません。 次のように、E列に倉庫コード・G列に数量が表示されている書式を使用しています。 (例)  (E列)(G列) 1  22B  0 2  31A  1 3  54A  0 4  456  40 5  65C  41 6  32B  60 7  33A  40 ※1行目から300行目まで文字が投入される可能性があります。 そして、次の条件によって、使用するマクロを分岐したいと思っています。 「1」.E列で文字列"B"が含まれている   かつ その行のG列の数量が1以上 の組み合わせがある 「2」.E列で文字列"B"が含まれていない かつ その行のG列の数量が1以上 の組み合わせがある 「1」「2」2つの条件に当てはまる場合は「a」の処理 「1」の条件にのみ当てはまる場合は「b」の処理 「2」の条件にのみ当てはまる場合は「c」の処理 (「1」「2」のどちらにも当てはまらない場合は無いので省略) ちなみに処理の内容は次のとおり 「a」:A・B2つのピボットテーブルを作成する 「b」:Bの1つのピボットテーブルを作成する 「c」:Aの1つのピボットテーブルを作成する 例の場合の処理は次のようになります。 ●1行目はセル(E1)は"B"が含まれているが、セル(G1)の数量が 1以上ではないので、「1」にも「2」にも当てはまらない。 ●2・4・5・7行目はE列に"B"が含まれていなくて、G列が 1以上なので「2」の条件 ●3行目はE列に"B"が含まれていないものの、G列の数量が 0なので「1」にも「2」にも当てはまらない。 ●6行目はE列に"B"が含まれていてセル(G6)の数量が1以上 なので「1」の条件 よって「1」「2」のそれぞれにあてはまる行があるので「a」の処理を行う。 セル範囲(E1:G300)の全ての行に関して上記の「1」「2」の条件に当てはまるか検索して、それぞれ当てはまった条件によって「a」「b」「c」の処理を行うようにしたいです。 (例)の場合だったら 6行目まで検索した時点で「a」の処理が決定します。 Select Case のマクロを使用したら良いと思ったが、どのようにマクロを記述したらよいのか解らないので教えていただけると助かります。 イメージとしては Select Case (1から300行目で「1」と「2」の条件に当てはまる行がある場合) 処理「a」を行う。 Select Case (1から300行目で「1」の条件に当てはまる行はあるが「2」の条件にあてはまる行はない場合) 処理「b」を行う。 Select Case (1から300行目で「2」の条件に当てはまる行はあるが「1」の条件にあてはまる行はない場合) 処理「c」を行う。 というところまではわかりますが、括弧の中の記述方法が分かりません。あるいは別の処理があれば教えていただけると助かります。

  • EXCELでマクロを使った検索・一覧抽出の方法を教えてください。

    社内文章の表を作成しているのですが、あまりにもデータ量が多く、関数での算出が難しくなってきたので、 マクロを導入したく思っているのですが、検索しても当てはまるものが無く、困っています。。。  | A  | B  | C  | D  | E  | F  | G  | H  | I  | J  | K  | 1|名称1|名称2|数量 |種類1|数量1|種類2|数量2|種類3|数量3|条件1|条件2|・・・ 2|    |    |    |    |    |    |    |    |    | (1) | (1) |・・・ 3|*****|*****|*****|***** |***** |*****|*****|*****|*****| (2)  | (2)  |・・・ 上記のような表があり、今までは関数にて、(1)のセルに検索条件を入力し、(2)のセルに「=SUMIF(D2:H2,A2(1),E2:I3)という式を入れ計算していました。 種類1~種類3に入力されている情報と(1)が合致したら、数量1~数量3を合計した値を(2)へ記入したいのです。 この検索条件が60項目あり、行数も2000行を超えているのですが、、全てのセルに関数を入れている状態です。

  • 【excelマクロ】重複をチェックしてその行を削除・表を整頓するマクロ

    会社で資材の在庫表を作成しているのですが、大変困っております。 マクロ初心者で技術不足なのでどうかご教授願います。 「資材受け入れシート」として、下の表があります。    1   2   3  4  受入日 品名  Lot  数量   7/7   A  BNR32  10   7/8   A  BNR32  5   7/10   B  SW200  2   7/7   B  AE860  4   7/8   B  SW200  12   7/9   C  GD300  10   7/7   C  GD300  1   7/7   C  DC200  7 これを2列目「品名」をキーとして「Lot」を確認し、同じ(つまり同じ物)であればその行を削除して、数量を加算して1行にまとめるマクロを作りたいのです。ポイントは2列目「品名」の重複確認のみで行削除ではなく、3列目「Lot」も確認する必要があることと、削除してからその「品名」がある行に削除した「数量」分加算しなくてはいけないことだと考えております。   1   2   3  4  受入日 品名  Lot  数量   7/8   A  BNR32  15   7/10   B  SW200  14   7/7   B  AE860  4   7/9   C  GD300  11   7/7   C  DC200  7 「受入日」の所はできれば最終日になれば良いかなと思っています。 会社で期限を決められているのですが、手こずってしまい前へ進みません。説明が分かりづらいかもしれませんが、どうか宜しくお願いいたします。

  • Excelでセルに「小計」と入力したら自動に計算してくれる関数

    行タイトルが品名、数量、金額の表で、品名の列に途中で「小計」と入力すると、金額の列に数字が表示されるようにしたいです。 行が長くなり、「小計」が数回にわたり出てくる場合は、「前回小計をした次のセルから今回小計するセルの前まで」を計算させる訳ですが、どんな関数を使えばいいのかわかりません。(マクロを組むようになるのでしょうか) どうぞ、よろしくお願いいたします。

  • エクセルマクロで出来るでしょうか。

    マウスでクリックしたセル位置の入力内容を、別のセル位置に表示するようなマクロは出来るでしょうか?。 考えているのは、弁当注文の集計表の作成です。 A列に氏名、B列に店名、C列に品名、D列に金額と、予め入力してある表で、 当日注文する分を、個人毎に、氏名・店名・品名・金額・とクリックすれば、 同じシート内に作成した集計表に、クリックした順番に表示していくというようなものです。 予めの入力は、各列5行目から行っています。 また集計表は、F列、G列、H列、I列の5行目から下に、クリックした順番に表示できればと思っています。

  • 【excelマクロ】重複データをチェックしてその行を削除・表を集計して整頓するマクロ

    MC28SP 会社で資材の在庫管理表を作成しているのですが、大変困っております。 マクロ初心者で技術不足なのでどうかご教授願います。 「資材受け入れシート」として、下の表があります。    1   2   3  4  受入日 品名  Lot  数量   7/7   A  BNR32  10   7/8   A  BNR32  5   7/10   B  SW200  2   7/7   B  AE860  4   7/8   B  SW200  12   7/9   C  GD300  10   7/7   C  GD300  1   7/7   C  DC200  7 これを2列目「品名」をキーとして「Lot」を確認し、同じ(つまり同じ物)であればその行を削除して、数量を加算して1行にまとめるマクロを作りたいのです。ポイントは(1)2列目「品名」の重複確認のみで行削除ではなく、3列目「Lot」も確認する必要があることと、(2)削除してからその「品名」がある行に削除した「数量」分加算しなくてはいけないことだと考えているのですが・・・。   1   2   3  4  受入日 品名  Lot  数量   7/8   A  BNR32  15   7/10   B  SW200  14   7/7   B  AE860  4   7/9   C  GD300  11   7/7   C  DC200  7 「受入日」の所はできれば最終日になれば良いかなと思っています。 会社で期限を決められているのですが、手こずってしまい前へ進みません。説明が分かりづらいかもしれませんが、どうか宜しくお願い致します。

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

    下記の処理をエクセルのマクロで行いたいのですが、どのように記述したよいか教えてください。 4行目から入力されている行まで下記の処理をマクロで行う。 1.J列のセル入力がCIRCLEの行で、B~E列の数値が同じセル間を結合する。 2.K列のセル入力がCIRCLEの行で、F~I列の数値が同じセル間を結合する。 3.J列のセル入力がOBLONG_XまたはOBLONG_Yの行で、B,D列及びC,E列の数値が同じ場合、B列をB列の数値XC列の数値とし、B~E列のセルを結合する。 4.K列のセル入力がOBLONG_XまたはOBLONG_Yの行で、F,G列及びH,I列の数値が同じ場合、F列をF列の数値XG列の数値とし、F~I列のセルを結合する。 5.J列のセル入力がOBLONG_XまたはOBLONG_Yの行で、B,D列及びC,E列の数値が同じでない場合、B列をB列の数値XC列の数値とし、B,C列のセルを結合する。又、D列をD列の数値XE列の数値とし、D,E列のセルを結合する。 6.K列のセル入力がOBLONG_XまたはOBLONG_Yの行で、F,G列及びH,I列の数値が同じでない場合、F列をF列の数値XG列の数値とし、F,G列のセルを結合する。又、H列をH列の数値XI列の数値とし、H,I列のセルを結合する。 7.J列のセル入力がSHAPEの行で、B~E列は何もしない 8.K列のセル入力がSHAPEの行で、F~I列は何もしない

  • 【Excel VBA】データを集計する数式を入力するマクロ

    Excel2003を使用しています。   A列   B列   C列   D列   E列   F列 1      9/1                    20000 2      9/2              1000 3      9/10              5000 : : 10           9月計        ※1    ※2    11 12 13     10/1                   10000 14     10/10             2000 15     10/14                   4000 : : 20           10月計       ※3    ※4 上記のデータでいうと、 ※1(E10セル) =SUM(E1:E9) ※2(F10セル) =SUM(F1:F9) ※3(E20セル) =SUM(E13:E19) ※4(F20セル) =SUM(F13:F19) という内容の数式を入力するマクロを作成したく、数式を入力したいセルをアクティブにして、ボタン等に登録したマクロを実行すると数式が入力されるようにしたいと考えていますが、その際、集計範囲の最下行は、アクティブセルの1行上までになりますが、最上行をどのようにして取得すればよいかがわかりません。 (実際のデータは、もっと行数も入力されているデータ数も多いです) また、他にもこんな方法があるとか、こうしたほうが簡単とかあれば、教えていただけると勉強にもなりますので助かります。 うまく説明できなくて申し訳ありませんが、よろしくお願いします。

  • Excelでマクロを使用した削除に関して

    マクロ初心者です。 Excelにて、以下のような表データがあるとします。     A列 B列 C列 D列 E列 … 1行      51  50  52  51    2行  50  a   b   c   d 3行  51  e   f    g   h    4行  52  i    j    k   l この表の中で、A列と1行目の値が同じになる交点となるセルの値"以外"を 削除して以下のように表示させたいのですが、 その方法がわかりません。     A列 B列 C列 D列 E列 … 1行      51  50  52  51    2行  50      b       3行  51  e          h    4行  52          k    単純な行削除・列削除ではないため、 頓挫しています。お知恵を拝借したく、よろしくおねがいします。

専門家に質問してみよう