No.13ベストアンサー
- 回答日時:
>For i = 2 To lastRow
>の所で、A列の最終行を求めるのは分かるのですが、
>なぜ、それで、B列の最終行まで求められるのでしょうか?
回答:B列の最終行は求められません。A列の最終行を取得して、それを表の最終行とみなす、ということです。
従って、A列の最終行が8行、B列の最終行が9行の場合、
2から8行目まで処理するので、9行目は、無視されます。
①これは、A列を基準にしているからです。
②もし、B列を基準にするなら、
lastRow=Cells(Rows.Count, 2).End(xlUp).Row
にすればよいです。
③もし、A,B列のどちらかの列で決めるのではなくではなく、
A,B列の最終列の大きいほうを最終行にするようにしたいなら、
lastrow1=Cells(Rows.Count, 1).End(xlUp).Row
lastrow2=Cells(Rows.Count, 2).End(xlUp).Row
として、lastrow1とlastrow2の大きいほうを最終行とすればよいです。
①②③のどれを採用するかは、マクロの作成者が決めることです。
No.12
- 回答日時:
>②さっきマクロ①が使いたい処理だと言っていましたが、マクロ③ではどこが使いたい処理なのでしょうか?
もしかするとlastRowを入れる前が、使いたい処理で、
lastRowが入っている場合が、マクロ③という感じでしょうか?教えて頂けると幸いです。
回答:はい。そうなります。
>だとすると、マクロ③でlastRowが入る前のマクロも出来るのでしょうか?
回答:
マクロ③から
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
の2行を削除し、
Set Rng = Range(Cells(a, b), Cells(lastRow, c)) を
Set Rng = Range(Cells(a, b), Cells(8, c)) にするとそうなります。(ただし、最終行が8行目の場合)
No.11
- 回答日時:
>①合計の所で、D2セルに入っている関数は、=SUM(A1:B8)という感じでしょうか?
回答:D2セルに関数は入っていませんが、もし、関数で合計を求めるなら
=SUM(B2:B8)になります。
ただし、最終行が10行になれば、=SUM(B2:B10)になります。
>②さっきマクロ①が使いたい処理だと言っていましたが、マクロ③ではどこが使いたい処理なのでしょうか?もしかするとlastRowを入れる前が、使いたい処理で、lastRowが入っている場合が、マクロ③という感じでしょうか?教えて頂けると幸いです。だとすると、マクロ③でlastRowが入る前のマクロも出来るのでしょうか?
lastRow= Cells(Rows.Count, 1).End(xlUp).Row
これ以降で、lastRowを使用している箇所が、
lastRowを使いたい処理です。
No.10
- 回答日時:
>なぜ、疑問①品名を基準にして考えたのでしょうか?
品名と数量があった場合、常識的には、品名を基準に行がきまると思います。
ただし、いや私は数量が基準だと考えるという人がいれば、それを尊重して数量を基準に行がきまるとしてもプログラム上は問題ありません。
常識的には腕時計を左手にはめるのが普通ですが、右手にはめても構いません。
No.9
- 回答日時:
>マクロ③にも使いたい処理があるのでしょうか?
具体的には、以下の行でlastRowを使っています。
Set Rng = Range(Cells(a, b), Cells(lastRow, c))
No.8
- 回答日時:
>マクロ③にも使いたい処理があるのでしょうか?
質問の日本語の意味が、よくわかりませんが、
もともとの「使いたい処理」とは、
lastRow= Cells(Rows.Count,1).End(xlUp).Row
のようにして求めた、LastRow(=最終行)を使いたいという意味です。
マクロ③が
lastRow= Cells(Rows.Count,1).End(xlUp).Row
を使っているので、マクロ③自体が使いたいという意味です。
No.7
- 回答日時:
>マクロ②でなぜ、lastRow= Cells(Rows.Count,2).End(xlUp).Rowじゃなくて、lastRow= Cells(Rows.Count,1).End(xlUp).Rowを使っているのでしょうか?
lastRow= Cells(Rows.Count,2).End(xlUp).Row
はB列(=2列目)の最終行を求めています。
lastRow= Cells(Rows.Count,1).End(xlUp).Row
はA(=1列目)列の最終行を求めています。
この添付図の最終行は、A列(品名)を基準に考えるからです。
No.6
- 回答日時:
>マクロ②でなぜ、疑問①lastRow = Cells(Rows.Count, 1).End(xlUp).Rowを組み込んでいるのでしょうか?
回答:そのようにすると、日々最終行が変わっても、マクロを修正しないで済むからです。
マクロ①の状態で運用すると
最終行が10行目に変わった場合、
For i = 2 To 10
最終行が20行目に変わった場合、
For i = 2 To 20
のように変えなければいけません。
これをしないで済むようにするためです。
>疑問②Set rng=Range(Cells(a,b),Cells(lastRow,c))も使うとどうなるのでしょうか?
回答:これを使うのは、
https://oshiete.goo.ne.jp/qa/13950838.html
のNo2のようなケースです。
以下のマクロを実行すると、添付図のような罫線が引けます。
マクロ③
-----------------------------------------------
Sub sample2()
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
a = 1
b = 1
c = 2
Set Rng = Range(Cells(a, b), Cells(lastRow, c))
'①上部
Rng.Borders(xlEdgeTop).LineStyle = xlContinuous
'②左
Rng.Borders(xlEdgeLeft).LineStyle = xlContinuous
'③下部
Rng.Borders(xlEdgeBottom).LineStyle = xlContinuous
'④右
Rng.Borders(xlEdgeRight).LineStyle = xlContinuous
'⑤範囲内の縦線
Rng.Borders(xlInsideVertical).LineStyle = xlContinuous
'⑥範囲内の横線
Rng.Borders(xlInsideHorizontal).LineStyle = xlContinuous
End Sub
----------------------------------------------------------------

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
excelVBAについて。
Excel(エクセル)
-
excelVBAについて。
Excel(エクセル)
-
excelVBAについて。
Excel(エクセル)
-
-
4
excelVBAについて。
Excel(エクセル)
-
5
エクセルマクロについて教えて下さい。
Excel(エクセル)
-
6
excelVBAについて。
Excel(エクセル)
-
7
excelVBAについて。
Excel(エクセル)
-
8
excelVBAについて。
Excel(エクセル)
-
9
excelVBAについて。
Excel(エクセル)
-
10
実務の処理について。
Excel(エクセル)
-
11
excelVBAについて。
Excel(エクセル)
-
12
【マクロ】メッセージボックスにて、キャンセルをクリックしたら、マクロ終了。エクセルへ戻すには
Excel(エクセル)
-
13
エクセル初心者です 用語とか良く分からないので簡単に説明していただけると幸いです 表を作っているので
Excel(エクセル)
-
14
excelVBAについて。
Excel(エクセル)
-
15
excelVBAについて。
Excel(エクセル)
-
16
ファイルパスについて。
Excel(エクセル)
-
17
エクセル初心者です 用語等まだ良く分からないので簡単に説明していただけると幸いです タブの挿入、図形
Excel(エクセル)
-
18
【マクロ】複数の日付データをYYYY/MM/DDに読替えて、別ブックへ転記したい
Excel(エクセル)
-
19
Excelで合計を求めたいです
Excel(エクセル)
-
20
excelVBAについて。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【画像あり】オートフィルター...
-
Office2021のエクセルで米国株...
-
エクセルのVBAで集計をしたい
-
vba テキストボックスとリフト...
-
【マクロ】元データと同じお客...
-
【マクロ】【相談】Excelブック...
-
【マクロ】実行時エラー '424':...
-
他のシートの検索
-
【マクロ】【配列】3つのシー...
-
【マクロ】数式を入力したい。...
-
【マクロ】左のブックと右のブ...
-
【関数】3つのセルの中で最新...
-
LibreOffice Clalc(またはエク...
-
エクセルシートの見出しの文字...
-
【マクロ】excelファイルを開く...
-
【マクロ】【画像あり】❶ブック...
-
空白のはずがSUBTOTAL関数でカ...
-
【関数】同じ関数なのに、エラ...
-
【マクロ】【画像あり】4つの...
-
エクセルの複雑なシフト表から...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】元データと同じお客...
-
エクセルの関数について
-
【画像あり】オートフィルター...
-
エクセルのVBAで集計をしたい
-
エクセルのリストについて
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
Office2021のエクセルで米国株...
-
【マクロ】実行時エラー '424':...
-
他のシートの検索
-
エクセルの複雑なシフト表から...
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
【マクロ】左のブックと右のブ...
-
【マクロ】変数に入れるコード...
-
エクセルシートの見出しの文字...
-
【マクロ】別ファイルへマクロ...
-
【関数】同じ関数なのに、エラ...
-
Amazonでマイクロソフトオフィ...
-
ページが変なふうに切れる
おすすめ情報
すみません。手書きで書きます。最後から4行は、
この変数を使う場合、サンプルの2,3行目をコピーして、使いたい処理よりも上の行へペーストしてください。そのあと、たとえば、「Set rng=Range(Cells(a,b),Cells(lastRow,c))」のようにセル範囲の終点セルの行として指定したり、繰り返し処理で「For i = 1 To lastRow」とループの終点に指定したりすると便利です。ちなみに、プログラム内容は、以下の通りです。
sub sample088( )
Dim lastRow As long
lastRow= Cells(Rows.Count,1).End(xlUp).Row
MsgBox lastRow
End sub
教えていただけると幸いです。
マクロ②でなぜ、疑問①lastRow = Cells(Rows.Count, 1).End(xlUp).Rowを組み込んでいるのでしょうか?後、疑問②Set rng=Range(Cells(a,b),Cells(lastRow,c))を使うとどうなるのでしょうか?教えて頂けると幸いです。
すみません。マクロ②でなぜ、疑問①lastRow = Cells(Rows.Count, 1).End(xlUp).Rowを組み込んでいるのでしょうか?後、疑問②Set rng=Range(Cells(a,b),Cells(lastRow,c))も使うとどうなるのでしょうか?教えて頂けると幸いです。
こちらが正しい疑問です。すみません。
迅速な回答ありがとうございます!所で、マクロ②でなぜ、lastRow= Cells(Rows.Count,2).End(xlUp).Rowじゃなくて、lastRow= Cells(Rows.Count,1).End(xlUp).Rowを使っているのでしょうか?教えて頂けると幸いです。
なぜ、疑問①品名を基準にして考えたのでしょうか?教えて頂けると幸いです。後、疑問②マクロ③で使いたい処理はあるのでしょうか?教えて頂けると幸いです。
すみません。この前、マクロ①が使いたい処理になる。と言っていたのですが、マクロ③には使いたい処理はないのかと思って。教えて頂けると幸いです。
つまり、①合計の所で、D2セルに入っている関数は、=SUM(A1:B8)という感じでしょうか?②さっきマクロ①が使いたい処理だと言っていましたが、マクロ③ではどこが使いたい処理なのでしょうか?もしかするとlastRowを入れる前が、使いたい処理で、lastRowが入っている場合が、マクロ③という感じでしょうか?教えて頂けると幸いです。だとすると、マクロ③でlastRowが入る前のマクロも出来るのでしょうか?
すみません。マクロ②のlastRow = Cells(Rows.Count, 1).End(xlUp).Row
gokei = 0
For i = 2 To lastRow
の所で、A列の最終行を求めるのは分かるのですが、なぜ、それで、B列の最終行まで求められるのでしょうか?教えて頂けると幸いです。