[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ド素人 範囲内の入力数字を置換』(kimama)
範囲内のセルに数字を入力すると決められた文字を置換しようとしているのですが
うまくいきません
ど素人です
ご教授 お願いいたします
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
For Each c In Target
If Not Intersect(c, Range("D6:AH16")) Is Nothing Then
Select Case c
Case 1
c = "×"
Case 2
c = "/"
Case 3
c = "○"
Case 4
c = "当番"
Case 5
c = "測定"
Case 6
c = "/"
End Select
End If
Next c
Dim d As Range
For Each d In Target
If Not Intersect(d, Range("D19:AH19")) Is Nothing Then
Select Case d
Case 1
d = "8:00"
Case 2
d = "8:30"
Case 3
d = "9:00"
Case 4
d = "9:30"
Case 5
d = "10:00"
Case 6
d = "10:30"
Case 6
d = "11:00"
Case 7
d = "/"
End Select
End If
Next d
Dim e As Range
For Each e In Target
If Not Intersect(e, Range("D21:AH28")) Is Nothing Then
Select Case e
Case 3
e = "○"
Case 4
e = "×"
Case 5
e = "/"
Case 6
e = "/"
End Select
End If
Next e
Dim f As Range
For Each f In Target
If Not Intersect(f, Range("D35:AH39")) Is Nothing Then
Select Case f
Case 1
f = "6:00"
Case 2
f = "6:30"
Case 3
f = "7:00"
Case 4
f = "7:30"
Case 5
f = "8:00"
Case 6
f = "8:30"
Case 7
f = "9:00"
Case 8
f = "9:30"
Case 9
f = "/"
End Select
End If
Next f
End Sub
< 使用 アプリ:Excel2007 Excel2010 Excel2013、使用 OS:Windows7 >
まず、質問のテーマじゃないんですが、これほど、全コードを1桁目から書いているケースもめずらしいというか
意地でも1桁目から書くんだと、そうつきつけられている気がしますねぇ。
ループや条件分岐がたくさん含まれるこの流れで、逆に、私なんぞは、このような書き方だと、自分が書いたコードが
自分の意と通りに正しく記述されているかどうか、頭が悪いので、不安になります。
この形式で全体を把握できるのは、ずいぶん、優れた能力なんだろうなぁと、そう思うくらいですね。
テーマに戻りましょう。
このコードで記述されていることは(当たり前ですが)、コード通り、【正しく】処理され【正しく】変換されますよ。
つまり、【変更のあったセル】つまり、Target ですけど、このセル(群)は、どの領域であったかということにそって
その領域内での変換ルールに従い、ちゃんと変換されます。
その領域内であっても、変更のないセルに関しては【もちろん】何も処理されませんから、変換は行われませんが。
ですから、「うまくいきません」という意味がわかりません。
ところで、最初にコメントした件、私なら以下のように書かないと、もう、とっても不安ですねぇ。
Private Sub Worksheet_Change(ByVal Target As Range) Dim c As Range
For Each c In Target If Not Intersect(c, Range("D6:AH16")) Is Nothing Then Select Case c Case 1 c = "×" Case 2 c = "/" Case 3 c = "○" Case 4 c = "当番" Case 5 c = "測定" Case 6 c = "/" End Select End If Next c
Dim d As Range
For Each d In Target If Not Intersect(d, Range("D19:AH19")) Is Nothing Then Select Case d Case 1 d = "8:00" Case 2 d = "8:30" Case 3 d = "9:00" Case 4 d = "9:30" Case 5 d = "10:00" Case 6 d = "10:30" Case 6 d = "11:00" Case 7 d = "/" End Select End If Next d
Dim e As Range
For Each e In Target If Not Intersect(e, Range("D21:AH28")) Is Nothing Then Select Case e Case 3 e = "○" Case 4 e = "×" Case 5 e = "/" Case 6 e = "/" End Select End If Next e
Dim f As Range
For Each f In Target
If Not Intersect(f, Range("D35:AH39")) Is Nothing Then Select Case f Case 1 f = "6:00" Case 2 f = "6:30" Case 3 f = "7:00" Case 4 f = "7:30" Case 5 f = "8:00" Case 6 f = "8:30" Case 7 f = "9:00" Case 8 f = "9:30" Case 9 f = "/" End Select End If Next f
End Sub
(β) 2015/02/22(日) 08:20
Chooose関数で
Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Range If Intersect(Target, Range("D6:AH16,D19:AH19,D21:AH28,D35:AH39")) Is Nothing Then Exit Sub Application.EnableEvents = False For Each r In Intersect(Target, Range("D6:AH16,D19:AH19,D21:AH28,D35:AH39")) Select Case r.Row Case 6 To 16 If r.Value Like "[1-6]" Then r.Value = Choose(r.Value, "×", "/", "○", "当番", "測定", "/") End If Case 19 If r.Value Like "[1-8]" Then r.Value = Choose(r.Value, "8:00", "8:30", "9:00", "9:30", "10:00", "10:30", "11:00", "/") End If Case 21 To 28 If r.Value Like "[3-6]" Then r.Value = Choose(r.Value, "", "", "○", "×", "/", "/") End If Case Else If r.Value Like "[1 -9]" Then r.Value = Choose(r.Value, "6:00", "6:30", "7:00", "7:30", "8:00", "8:30", "9:00", "9:30", "/") End If End Select Next Application.EnableEvents = True End Sub (seiya) 2015/02/22(日) 13:26
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.