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

VBAでセルの値(時間)左辺=絶対参照 から引き算でセルの値(時間)右辺=は、セルの位置が下へ1つずつ下がり、
答えのセルも右辺と同じ行の違う列に表示し、右辺の値が最終行になるまで、繰り返すコードの質門。

どなたか、お教えください。お願いします。
Dim T1 As Date
Dim T2 As Date
Dim T3 As Date

T1 = Cells(2, 5) 'E2 左辺の時間 固定(絶対参照?)
T2 = Cells(3, 5) 'E3 右辺の時間 E4, E5, E6 と下へ一つずつ移動し途中に - - (ハイフン2つ)とかのセルがありますが、右辺の値がなくなるまで移動させたいです。
T3 = T1 - T2
Cells(3, 7) = T3 'G3 答えを表示するセル。これも、T2(右辺)と同じ行なので、G3,G4,G5と下へ一つずつ値がなくなるまで移動させたいです。

わかんなくて、困ってます。おできになられる方、VBAのサンプルをお教えください。お願い致します。

A 回答 (2件)

No.1です。


「--」で止まらないようにするため、
「If IsNumeric(Cells(i, 5)) Then」という条件をつけているわけです。
これにより、E列で数値以外のセルに当たった時には計算をスキップさせます。
Do Loopだと動かないということではありません。
私の書いたコードでもこのIf節を使えばちゃんと動きます。
その点は私の理解不足でしたのでごめんなさい。
    • good
    • 0
この回答へのお礼

いえいえ、お詫びするのは、こちらの方で、No.1様は、あやまらないでください。
お教え頂きました通り、Do Loop でも、もし、セルの値が数値なら、とIsNumeric 節を入れたら、
動きました。大変勉強になりました。どうも有難うございます。
今後共、宜しくお願い致します。

お礼日時:2013/03/07 15:33

関数でやるとするとこういうことでしょうか。


G3=$E$2-E3
G4=$E$2-E4
で、Gx=0になるまで繰り返し処理したいと。

E3以下はあらかじめ入力してあるとしたらこんな感じでしょうか。

Dim i As Integer
i = 2
Do
i = i + 1
Cells(i, 7)=Cells(2, 5).Value-Cells(i, 5).Value
Loop While Cells(i, 7)>0
    • good
    • 0
この回答へのお礼

ご回答有難うございました。Do Loop ですと、セル値が - - のセルの前で止まってしまいました。

ヤフー知恵袋のカテゴリマスター様から、下記の回答をいただきまして、動きました。どうして、下記のコードだと、- - を飛ばして、下の行からまた、表示されるのか、ワタスには、わかりません。もし、おわかりになれば、お教えください。

Dim i As Integer
For i = 3 To Cells(Rows.Count, 5).End(xlUp).Row
If IsNumeric(Cells(i, 5)) Then
Cells(i, 7) = Format(Cells(2, 5) - Cells(i, 5), "h:mm")
End If
Next

お礼日時:2013/03/06 21:16

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