[[20040609091508]] 『IF文で2以上9以下を指定したい』(ケンのぱぱ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『IF文で2以上9以下を指定したい』(ケンのぱぱ)

IF文で条件式を2以上9以下と表現したいのですが、良く分かりません。
これをVBAで書ければ、一番良いのですが....

入力判定値 1〜12。
入力セル  A1。
計算式....
 1の時は、B1=A1+1です。
 2〜9の時は、B1=A1+2です。
 10の時は、B1=A1+3です。
 11から12の時は、B1=A1−2です。

何方か、ご教授願います。


 ↓こういうことでしょうか?
Sub test2()
Dim myNo As Integer
myNo = Cells(1, 1).Value
If myNo = 1 Then
    Cells(1, 2).Value = myNo + 1
ElseIf myNo <= 9 Then
    Cells(1, 2).Value = myNo + 2
ElseIf myNo = 10 Then
    Cells(1, 2).Value = myNo + 3
ElseIf myNo <= 12 Then
    Cells(1, 2).Value = myNo - 2
Else
    Cells(1, 2).Value = Null
End If
End Sub
 
IF文ではありませんが↓こういうのもありそうです。
Sub test()
Dim myNo As Integer
myNo = Cells(1, 1).Value
    Select Case myNo
        Case 1
         Cells(1, 3).Value = myNo + 1
        Case 2 To 9
         Cells(1, 3).Value = myNo + 2
        Case 10
         Cells(1, 3).Value = myNo + 3
        Case 11 To 12
         Cells(1, 3).Value = myNo - 2
        Case Else
         Cells(1, 3).Value = Null
    End Select
End Sub
 (マーヤ)


 マーヤさん横レスゴメンなはれや。
 衝突して先越されましたなぁ。(笑)

 折角やから

 VBAでもシートチェンジを使う方法とユーザー関数を使う方法がありますワ。
 別にVBAを使わんでも関数で充分こなせますけど?

 1)Sheet1モジュールにコピペ (Sheetのチェンジイベントを利用する方法)
 '-------------------
 Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Target.Address <> "$A$1" Then Exit Sub
        With Range("b1")
            Select Case Target
                Case 1
                    .Value = Target + 1
                Case Is < 10
                    .Value = Target + 2
                Case 10
                    .Value = Target + 3
                Case 11, 12
                    .Value = Target - 2
                Case Else
                    .Value = ""
            End Select
        End With
 End Sub

 2)標準モジュールにコピペ (ユーザー関数を利用する方法)
 '-----------------------
 Function baba(data)
    Select Case data
        Case 1
            baba = data + 1
        Case Is < 10
            baba = data + 2
        Case 10
            baba = data + 3
        Case Is < 13
            baba = data - 2
    End Select

 End Function

 こっちは関数と同じでケンのばばさんの例で申し上げるとB1に=baba(a1)と入力
 すれば結果がちゃんと報告されますワ。
 2個テストするんやったらC1に入力してもよろしいなぁ。
 babaは適当に変更して貰うても構いまへんでぇ。(笑)
     ほな...(弥太郎)

 しまった〜 今日は弥太郎さんがおられたのですね?
>衝突して先越されましたなぁ。(笑)
もうちょっと時間をおいとけば、稚拙なコードをさらさずにすんだのに(^^;)
では、(^^)/~ (VBA入門中のマーヤより)

 整数値で返る値が決まっているのなら
B1へ下記が一番シンプルじゃないかなぁ。
=IF(A1,CHOOSE(A1,2,4,5,6,7,8,9,10,11,13,9,10),"")
(KAMIYA)

  >稚拙なコードをさらさずにすんだのに
 んな事はおまへんワ。

 私の持論として人目に触れる関数とちゃいましてVBAはあくまで裏方の
 仕事ですさかい、要するにちゃんと動いて、且つ思い通りの結果が出せたらええ訳で
 して、見栄えなんてどうでもええと思うてまんねんで、えぇ。
 せやから、ほんなことは一切気ぃになりまへんワ。
 どんどんレスつけたっておくんなはれや。
      
 KAMIYAはん、おはようございます。
 そうでっしゃろ?関数で充分ですわなぁ。
 VBAをご所望と言うからには、これからVBAを手ぇの中に入れようって寸法か、もしくは
 実際にはもっと複雑な条件が重なるんでVBAを利用してみようを思うてはるんかも
 しれまへんなぁ。

       ほな...(弥太郎)

 レスが遅れました。
 皆さん、色々な回答をありがとうございました。
 これを利用して目的のマクロの一部が作成できました。
 (ケンのぱぱ)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.