|
▼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番目の文字"×"が
元のセルに代入されます。
ということです。
|
|