| 
    
     |  | ▼Yoshi さん: 
 >最終のコードでは正しく動作します。
 
 前後しますが、
 -------------------------------
 >Case Else
 > .ClearContents
 >を入れると、1を入れても2を入れてもクリアされます。
 >7以上は空白のまま残したいのですが、
 
 この件は、UO3 さんからコメントのあるように、
 「1〜6 以外何もしない」なら、下記の Case Else部分を全部削除すればいい
 と思います。
 >  With Target(1)
 >    Select Case .Value
 >     Case 1 To 6
 >       .Value = Mid$("◎○△▲*×", .Value, 1)
 'Case Else
 '  .ClearContents
 >    End Select
 >  End With
 のように。
 
 そうすると、残るのは
 >  With Target(1)
 >    Select Case .Value
 >     Case 1 To 6
 >       .Value = Mid$("◎○△▲*×", .Value, 1)
 >    End Select
 >  End With
 となりなす。
 
 -----------------------------
 >  .Value = Mid$("◎○△▲*×", .Value, 1)
 >の理解が出来ません。
 >どのように理解すると良いのでしょうか?
 
 >  With Target(1)
 ↑ Target(1) というのは
 変更のあったセル範囲のうちの最初のセルのことです。
 
 ↓このセルの値(.Value) が 1〜6の範囲にあったら、
 >    Select Case .Value
 >     Case 1 To 6
 
 ↓そのセルの値を "◎○△▲*×"という文字列のうち
 元の値の位置の1文字だけとりだしたものに変更する
 という処理をしています。
 >       .Value = Mid$("◎○△▲*×", .Value, 1)
 >    End Select
 >  End With
 
 具体的には、
 変更のあったセルの値が 1 なら、
 >       .Value = Mid$("◎○△▲*×", .Value, 1)
 は
 .Value = Mid$("◎○△▲*×", 1, 1)
 ということですから、
 "◎○△▲*×" の最初の1文字 "◎" がそのセルに代入されます。
 
 変更のあったセルの値が 2 なら、"◎○△▲*×"の2番目の文字"○"が
 元のセルに代入されます。
 以下同様にして、
 変更のあったセルの値が 6 なら、"◎○△▲*×"の2番目の文字"×"が
 元のセルに代入されます。
 
 ということです。
 
 
 |  |