アプリ版:「スタンプのみでお礼する」機能のリリースについて

マクロで100マス計算!

Dim i,j As Integer

For i = 2 ToRange(”A1”).End(xlDown).Row
For j=2 To Range(”B1”).End(xlToRight).Column

Cells(i,j).Value = Cells(i,1).Value * Cells(1,j).Value
Next j
Next i
Endsub

上記のように記述しましたが、
iの最終行が2となってしまっていますがなぜこのコードが間違っているのか分からないです。。どなたか教えていただけたら嬉しいです!

質問者からの補足コメント

  • 改行、スペースは実際にはきちんととっていますので気にしないでください

      補足日時:2016/10/24 10:15
  • おっしゃる通り、実行時カーソルあてると最終行が2となっています。しかし途中空欄セルはなく、角のA1は空欄ですが、2から最後まで値入っています。
    ちなみに、jの最終列はきちんと最終列までとれています…

      補足日時:2016/10/24 10:36
  • また、ctrl+↓でA1から最終行までいきました。

      補足日時:2016/10/24 10:37
  • 訂正です。A2から最終行までいきました。

      補足日時:2016/10/24 10:37

A 回答 (2件)

Range(”A1”).End(xlDown).Row



が「2」になってるんじゃない?
だとすると、A列のセルは、A1、A2にしか情報が入っていてA3が空欄になっている。

Range(”A1”).End(xlDown).Row
って、A1を選択した状態で[Ctrl]+[↓]を押した時に選択されるセルの行ですから、これで確認できると思います。

参考・・・
A列の最後に文字の入っているセルを探す場合は、これかな。
Cells(Rows.Count, 1).End(xlUp).Row
A列の一番下のセルを選択した状態で[Ctrl]+[↑]を押した時に選択されるセルの行。
    • good
    • 0

確認してはいませんが…




>改行、スペースは実際にはきちんととっていますので気にしないでください
とのことなので、違っているのかもしれませんが、

>For i = 2 ToRange(”A1”).End(xlDown).Row
         ↓
 For i = 2 To Range(”A1”).End(xlDown).Row
で、うまくいきませんか?
100マス(10×10)と最初から決まっているので、範囲は 2 To 11 でも良いように思いますが…

改行、スペースなどが正しくなっているなら、Range(”A1”).End(xlDown).Rowの値が2以下になっている可能性が考えられます。(ということは、A1が空白セル、または、A3が空白セルなどなど・・)
A1が空白セルの場合は、
 For i = 2 To Range(”A2”).End(xlDown).Row
とするか、
 For i = 2 To 11
などとすることで、動作するのではないかと推測します。
    • good
    • 0
この回答へのお礼

動きました!A2になおしたらできました。空欄セルのA1から数えたらいけないのですね。
2 To 11でよかったのですが、
サンプル問題集をしていて、固定でない場合で記述することとありましたので(^ ^)
ありがとうございました!

お礼日時:2016/10/24 10:44

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