[[20150222070743]] 『ド素人 範囲内の入力数字を置換』(kimama) ページの最後に飛ぶ

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

 

『ド素人 範囲内の入力数字を置換』(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.