[[20150417004730]] 『顧客管理をしています。決まった数値を入れたら当』(はな) ページの最後に飛ぶ

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

 

『顧客管理をしています。決まった数値を入れたら当てはまる値を返したいです。』(はな)

例えば決まったSheet2のセルに数値1〜7のうち、ひとつだけ入れます。
そうしたら、別のSheet1のセルに決まった値(A/B/C)3種類のうちひとつ返るようにしたいです。

1・2ならA
3・4・5ならB
6・7ならC

何人か使用するのでセルに数式を入れると、誰かが間違えて消してしまうので、
マクロを使ってしたいと考えています。

ご指導のほどお願いします。

< 使用 Excel:Excel2007、使用 OS:Windows7 >


 こんばんは

 シートモジュール(sheet2)に下記コード張り付けてください。
 sheet2のC3セルに1-7の数字を入力。
 sheet1のC3セルの値が(A/B/C)となります。
 対象セルは実際セルに変更して下さい。

 素人コードですが

 '-------ここから
 Private Sub Worksheet_Change(ByVal Target As Range)

    If Intersect(Target, Range("C3")) Is Nothing Then Exit Sub
    Cancel = True
    Dim v As String
    Select Case Target.Value
      Case 1, 2: v = "A"
      Case 3, 4, 5: v = "B"
      Case 6, 7: v = "C"
    End Select
    Sheet1.Range("C3").Value = v
 End Sub
 ’-------ここまで
(g999) 2015/04/17(金) 01:42

ありがとうございます。
数字以外を入力したら出来ません。

数字以外でもできるようにするにはどうすればいいですか?(英数字)
説明不足ですいません。
(いつき) 2015/04/17(金) 08:57


 >例えば決まったSheet2のセルに数値1〜7のうち、ひとつだけ入れます。 

こう明記しているのに、数字以外を入力したらできません、とは、説明不足どころではないですよ?
それと、数字は本当に1〜7なんですか? 実は2桁以上もあったりしませんか?

連続した数値でしか通用しないコーディングもあるので、条件提示は変にごまかさず、正確に全てを書いてください。
嘘の条件を書かれたために、折角作ったマクロが無駄に終わると、回答者はとてもがっかりします。

で、数字以外を入力した場合は、どうなって欲しいのでしょう。 "D"とでも表示するのですか?
それとも、入力されたそのものを表示するのですか?
そしてそれば、g999さんが書いてくれたマクロに、Elseを追加するだけでは、解決できないような内容ですか?
(???) 2015/04/17(金) 09:15


 横から失礼します。

 まず、Changeイベントですから Cancel という変数はありません。
 Option Explicit を記述してればコンパイルエラーになるところですね。

 それと、細かなことで恐縮ですが、たとえば C3 を含んだ複数セルを選択して Deleteキーでクリアしたような場合
 このコードでは、実行時エラーになりますね。
 Intersect での結果を変数に取り込んでおき、Selet Case では、その変数のValue を記述するか
 ないしは C3 そのものを記述しておかれるほうがよろしいかと。

(β) 2015/04/17(金) 09:22


 連投失礼します。

 >何人か使用するのでセルに数式を入れると、誰かが間違えて消してしまうので

 マクロ化の理由がこれだけであれば、いったんすべてのセルの書式でロックを外し、数式を入れておくセルをロックした上で、
 シート保護をかける。

 そうしておけば、この場合はこんな表示といったことが、(はな)さん自身で簡単に変更追加できますよね。

(β) 2015/04/17(金) 09:26


誠に申し訳ありません。

sheet2に結合したセルに3桁の英数字を入れた場合
sheet1の結合したセルに3種類の文字列を返したいです。
(はな) 2015/04/17(金) 09:29


3桁の英数字とは、最初の例を考えると、7パターンだけなのですか?
それとも、3桁の中に1〜7の数字が含まれており、その部分をA〜Cに置き換えたものにしたいとか?
(例えば「Z12」→「ZAA」とかなのか、「Z12」→「A」なのか…)

相変わらず、情報が足りません。 変換のinput、outputの実例を幾つか挙げて説明してください。
数式を消されてしまう、というくらいなら、現在は数式ができているはず。それを見せてください。
(???) 2015/04/17(金) 09:44


7パターンです。
数式有りません。
(はな) 2015/04/17(金) 10:09

3桁で7パターンならば、g999さんのマクロ応用で十分では?

 Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cw As String

    If Target.Count <> 1 Then Exit Sub
    If Intersect(Target, Range("C3")) Is Nothing Then Exit Sub

    Select Case UCase(Target.Value)
    Case "A01", "A02"
        cw = "A"
    Case "B01", "B02", "B11"
        cw = "B"
    Case "D01", "Z01"
        cw = "C"
    Case Else
        cw = ""
    End Select
    Sheet1.Range("C3").Value = cw
 End Sub
(???) 2015/04/17(金) 10:32

ありがとうございます。
出来ました。色々ご迷惑かけました。
これから、もっと勉強します。
(はな) 2015/04/20(月) 08:26

コメント返信:

[ 一覧(最新更新順) ]


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