dポイントプレゼントキャンペーン実施中!

お世話になります。

縦軸に
① 数値
② #NUM!
③ #VALUE!
④ 空白

があり、上から見ていって、①~④の結果に対して、別の列に
違う結果を書き込みたいです。(以下のように)
’①
If IsNumeric(Cells(jj, 22)) = True Then
Cells(jj, 20).FormulaR1C1 = "=WORKDAY.INTL(RC[1],1)"
End If
´②
If Cells(jj, 33) = 6 Then
Cells(jj, 20) = "○"
End If
’③
If Cells(jj, 33) = 3 Then
Cells(jj, 34) = "*"
End If
’④
If Cells(jj, 33) = "" Then
Cells(jj, 20) = ""
End If

※先に、
For p = 2 To k
Cells(p, 33).FormulaR1C1 = "=ERROR.TYPE(RC[-11])"
Next p
を入れて、エラータイプを数値化させています


ですが、②と③でエラーとなってしまいます。
なにか遠回りしている気もするのですが、判定をさせる事は
できませんでしょうか?

お手数かけますが、よろしくお願いします。

A 回答 (1件)

こんにちは



cells(jj,22)の値が、ご質問の①~④のどれに当たるかを識別できれば良いものと理解しました。
他に必要がないのであれば、ERROR.TYPE()関数等を用いなくても、直接VBAから識別が可能です。

それぞれの場合に対する処理はよくわからないので、とりあえずCell(jj,20)にその場合分けを文字で記入する形としてあります。
なお、①~④に該当しない場合は何もしません。
(IsNumeric()はセル値がブランクでもTRUEを返すようなので、ブランクの判定を先に行う必要がありますね)

v = Cells(jj, 22).Value
Set r = Cells(jj, 20)

If IsEmpty(v) Then
 r.Value = "④" ' ④の場合の処理
ElseIf IsNumeric(v) Then
 r.Value = "①" ' ①の場合の処理
ElseIf IsError(v) Then
 If v = CVErr(xlErrNum) Then
  r.Value = "②" ' ②の場合の処理
 ElseIf v = CVErr(xlErrValue) Then
  r.Value = "③" ' ③の場合の処理
 End If
End If
    • good
    • 0
この回答へのお礼

fujillinさん
さっそくの回答ありがとうございました。
できました!
まだまだ知らない事がたくさんあるんですね(^^;
またよろしくお願い致します。

お礼日時:2017/06/12 19:25

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