推しミネラルウォーターはありますか?

いつもおせわになります。
現在、下記のようなコードを書いてますがどうもうまくいきません。よろしくお願いいたします。

M列 = K列 × N列を6行目から最終行目で入れたくて下記のようなコードを書きました。
ところが・・・N列にはデータのない場合があるので、If~を入れてみました。ここまではうまくいったのですが、
O列 = K列 × P列のように数式を入れたい列が他にもあり、又同じコードを下記のように書いたら、P列にデータがないところで止まってしまいます。

'/////////////////////////////////////////////
Dim wsS As Worksheet
Dim r As Long
Dim Srow As Long

Set wsS = Worksheets("syukei")
Srow = wsS.Range("D65536").End(xlUp).Row
With Worksheets("syukei")
For r = 6 To Srow
If Cells(r, 12) = Noting Then
r = r
End If
Cells(r, 13) = Cells(r, 11) * Cells(r, 12)
Next
End With

With Worksheets("syukei") '↓////////ここらへんで止まる//////////
For r = 6 To Srow
If Cells(r, 14) = Noting Then
r = r
End If
Cells(r, 15) = Cells(r, 11) * Cells(r, 14)
Next
End With
End Sub

掛け算を入れたい行は、下記のようになっています。
M列=K列×L列
O列=K列×N列
Q列=K列×P列
S列=K列×R列
U列=K列×T列
W列=K列×V列
Y列=K列×X列

よろしくお願いいたします。

A 回答 (2件)

rurucomさんこんにちは。

記述されたコードの中の、Notingが定義されていないのが原因ではないでしょうか。たとえば、空白であれば、"" という記述でOKです。以下に、例を示してみましたので、試してみてください。この例では、ある列の最終行を取得する関数を作っています。また、空白や文字列などがデータに混在していて、計算できない場合は、エラーを無視しして進みますので、結果的に空白のセルが返されるはずです。

Sub TEST()
Dim r As Long '計算結果を書き込む行番号
Dim Srow As Long '計算結果を書き込む最下段の行番号
Dim cul As Integer '計算結果を書き込む列番号

On Error Resume Next 'エラーが発生しても処理を進める

With Sheets("syukei")
  'culの値を12(L)から24(X)まで1つ飛びに増加させる
  For cul = 12 To 24 Step 2
   'シートsyukeiのcul列目の最下段を調べる
   Srow = Myrec("syukei", cul)
   For r = 6 To Srow
    If .Cells(r, cul) <> "" Then
      .Cells(r, cul + 1) = _
        .Cells(r, 11) * .Cells(r, cul)
    End If
   Next r
  Next cul
End With
End Sub

Function Myrec(stIndex, c As Integer) As Integer
'***使用されている行数を返す関数***

'stIndex 調べるシートの名前またはインデクス値
'c 調べる列番号
Myrec = Sheets(stIndex).Range(Sheets(stIndex).Cells _
(ActiveSheet.Rows.Count, c).End(xlUp).Address).Row
End Function

上記の2つのステートメントを貼り付けて実行してみてください。
不具合がある場合は再度ご質問ください。
    • good
    • 0
この回答へのお礼

ありがとうございました。
うまくいきました!!

お礼日時:2002/07/01 21:28

For r = 6 To Srow


If (IsEmpty(Cells(r, 1)) Or IsEmpty(Cells(r, 2))) = True Then
Cells(r, 3) = "#n/a"
Else
Cells(r, 3) = Cells(r, 1) * Cells(r, 2)
End If
Next

にしてみてはいかがでしょう?
#ただし、cells(r,*) の*は、適宜列にあわせて決めてください。
あと、同じ演算を何回もやるようなので、For ... Nextにまとめて記述してしまうのも良い手だと思いますよ。
    • good
    • 0
この回答へのお礼

ありがとうございました。
For~Nextやってみました。アドバイスありがとうございました。

お礼日時:2002/07/01 21:29

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