|
To ちんさん わかりやすいフルーチャートありがとうございます。
To つぐみさん
是非、ちんさんのフルーチャートをダウンロードして、それを追いかけながら
コードと見比べてください。より、わかりやすく理解できると思います。
まず、ごめんなさい というところがあります。
>A1を選択して、Shft/↓(下矢印キー) を押す操作をマクロ記録すると、
>このコードの要素も含めたコードが自動生成されます。
これは間違いでした。(汗)
Shift/↓ ではなく Ctrl/↓ でした。
さて、
提示したコードや操作の手順は
・1行目がタイトル行
・データは2行目から
・A列:型名、B列:数量、C列:単価、D列:契約金額合計
こうなっています。これでいいんですよね。
で、単価計算はC2から下のセル領域ですが、ここに何かはいっていても空白でもかまいません。
>私が添付した資料が最終行までに空白がある場合はどうしたらいいのでしょう?
途中に空白セルがある場合は、コメントしましたように、
最終行のセル.End(xlUp) で求めます。アップしたコードは、このようになっています。
ただ、それを操作で行い、かつマクロ記録するとなると、ちょっと骨が折れます。
(といっても、たいしたことはありません)
・最終行を把握したい列の本当のエクセル最終行のセルを選択します。(たとえば A63356)
・そこから Ctrl/↑ をおします。空白をはさんだ、本当のデータ最終行のセルが選択されます。
これをマクロ記録しますと、End(xlUp) のコードが生成されます。
この時、生成されるコードの固定で入っている、65536 等の数値は、Rows.Count という変数で
置き換えます。
Range("A65536").select --> Range("A" & Rows.Count).Select
で、合わせてアップした、コピペ操作による処理に関しては
1.D2を選択
2.Ctrl/Shift/↓ これで、D2からD列のデータ最終行までのセルが選択されます。
これは、D2から、D列のデータ最終行(たとえばD20)まで選んで、選択してください。
3.B2を選択
2.Ctrl/Shift/↓ これで、B2からB列のデータ最終行までのセルが選択されます。
これは、B2から、B列のデータ最終行(たとえばB20)まで選んで、選択してください。
で、この一連の操作によるマクロ記録で生成されたコードは、先に申し上げたものと異なり
以下のように、B20 とか、D20 といった「固定値」がはいっています。
Range("D2:D20").Select や Range("B2:B20").Select
この 20 の部分を 別途取得した最終行を格納した変数(たとえば、その変数名を MaxRowとしますと)
Range("D2:D" & MaxRow).Select というように直します。
|
|