|
nさんへ
いつも有難う御座います。
ASC(TRIM(CLEAN()))の方はうまくいきましたが、
もう一方の貼り付け前の状態に戻る方がうまくいきません。
下記コードを入れても、無反応でした。
恐らくコード記載方法が違うと思いますが、
正直、よく分かりません。
お手数をお掛けしますが、ご指導の程、お願い致します。
D5:D3000(B列でなくD列でした)に薄く色付けしてます。
Private Sub Worksheet1_Change(ByVal Target As Range)
Dim sng As Range
Dim s As Range
Set sng = Intersect(Target, Rows("5:3000"), _
Range("D:D"))
If Not sng Is Nothing Then
Application.EnableEvents = False
ActiveSheet.Unprotect
For Each s In sng
If s.Interior.ColorIndex = xlNone Then
Exit Sub
Else
If MsgBox("戻す?", vbYesNo) = vbYes Then
Application.Undo
End If
Next
ActiveSheet.Protect
Application.EnableEvents = True
Set sng = Nothing
End If
End Sub
▼n さん:
>>メッセージを表示(再試行)して、貼り付け前の状態に戻る...
>
>If MsgBox("戻す?", vbYesNo) = vbYes Then
> Application.Undo
>End If
>みたいな感じですが、何をトリガーにして実行するか、ですね。
>B5:B3000に薄く色をつけておけば
>If ...Interior.ColorIndex = xlNone Then
>で判定するWorksheet_Changeイベントが使えそうな気がしますが。
>
>>ASC(TRIM(CLEAN()))で
>そのまま
>With Application
> Range("B5:B10").Value = .Asc(.Trim(.Clean(Range("B5:B10"))))
>End With
>などで。
>B5以下のデータがある範囲に限定すると良いでしょう。
>
>もしくはWorksheet_Changeイベントを使って、入力時にチェックするのでも良いかと。
|
|