[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『顧客管理をしています。決まった数値を入れたら当てはまる値を返したいです。』(はな)
例えば決まった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
相変わらず、情報が足りません。 変換のinput、outputの実例を幾つか挙げて説明してください。
数式を消されてしまう、というくらいなら、現在は数式ができているはず。それを見せてください。
(???) 2015/04/17(金) 09:44
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
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.