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

こんばんは

このIFはもっとうまい書き方ありますか?

If Range("C3") = 1 Then
 Range("D16")="aaa"
ElseIf Range("C3") = 2 Then
 Range("D17")="aaa"
ElseIf Range("C3") = 3 Then
 Range("D18")="aaa"
End If

C3が1の時はRange("D16")で
C3が2の時はRange("D17")で
というふうになっているので
なんかうまい手がありそうですが

D16の16は1たす15ですから
D17の17は2たす15ですから
この関係なら、マクロが上手な人は、もっとうまく書けると思って
質問しました

A 回答 (7件)

このような場合は「Select case」ステートメントを使うのが一般的ではないでしょうか。

15+C3セルみたいな方法で出来ないことはないですが、仕様(本来やりたいこと)と合っていなければ意味がありません。無理してコードを簡略化することはお薦めできません。
    • good
    • 0
この回答へのお礼

ありがとうございます

Select case はみやすいです
今まで無視してました
これを機会に使ってみます

Caseの右側が色々な書き方があるようで、整理してみます
今まで式しか使ったことがないので大変です

お礼日時:2017/09/26 22:56

Select Case Range("C3").Value


Case Is = 1
Range("D16") = "aaa"
Case Is = 2
Range("D17") = "aaa"
Case Is = 3
Range("D18") = "aaa"
End Select

こんなのではダメですか?
select 文を使います。
    • good
    • 0
この回答へのお礼

ありがとうございます

Select Case は見たことありますが無視してました
こんな風に書くんですね
自分のやりたいことで書いてあると理解できます

パッと見て、マクロ初心者でもわかりやすいです
Ifより見やすいです

ありがとうございました

お礼日時:2017/09/26 22:48

No1です。


Range("D" & (15 + Range("C3").value)).value = "aaa"
の誤りでした。訂正します。
    • good
    • 0
この回答へのお礼

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

お礼日時:2017/09/26 22:39

No.2 の補足



「Range("C3")」を「With」でまとめて以下のように出来ます。

With Range("C3")
If .Value >= 1 And .Value <= 3 Then
Cells(.Value + 15, 4).Value = "aaa"
End If
End With
    • good
    • 0
この回答へのお礼

ありがとうございます
Cells(.Value + 15, 4).Value = が
見やすくていいですね

行、列と書いておかないと、頭が混乱します

お礼日時:2017/09/26 22:43

こんばんは!



色々やり方はあると思いますが・・・

If IsNumeric(Range("C3")) Then
Range("D16").Offset(Range("C3") - 1) = "aaa"
End If

程度でも大丈夫だと思います。m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございます

If IsNumeric(Range("C3")) Then
「もしもC3が数値なら」ですね
OffsetはRange("D16")からずれるのですね
いま、調べて知りましたが頭が混乱します
これはもう慣れですね
というか、やっぱり、それなりに知恵をつけないとマクロは上達しないような気がしてます

みなさん、メモも見ないですらすら書けるようで、感心します

お礼日時:2017/09/26 23:13

こんな事でしょうか?



If Range("C3").Value >= 1 And Range("C3").Value <= 3 Then
Cells(Range("C3").Value + 15, 4).Value = "aaa"
End If
    • good
    • 0
この回答へのお礼

ありがとうございます
千葉県九十九里の外れの100riです

検索して調べました
Cells(行番号、列番号)ですね
Rangeと使い分けがわかりませんので、勉強します

ありがとうございました

お礼日時:2017/09/26 22:39

C3には1,2,3の何れかしか格納されていないという前提で良いなら


Range("C" & (15 + Range("C3").value)).value = "aaa"
    • good
    • 0
この回答へのお礼

こんばんは
きのうも教えてもらいました
ありがとうございました
九十九里浜の外れに住んでいるから100riです

マクロはおもしろいけど、IFばっかり書いてて長くなる一方です
すぐに教えてもらえたのでやってみました
CはDに替えましたが、私のサンプルが間違っていて、実際は+14でした

それにやっと気づいて直したらちゃんとできました
&でアルファベットと数値がくっつくのが新しい発見です

ありがとうございました
なんか、専任講師みたいですみません

お礼日時:2017/09/26 22:27

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