|
▼タケタケ さん:
おはようございます!
コード内ですが、わざわざ2回も
> If .Value = "c" Then
で分岐しなくても1回でいいですよ。
>また、F列セルのDELETEするとエラーがでます(例えば、F2:F3セル選択で削除)。
こちらはSelect対象が1つより多いときにエラーとなってしまいますので
1つより多いときには処理を終了させるコードを記載してあげれば大丈夫です。
下記に追加してあります。
>エラー無く動くのですが、Cが既に入ってる上段行の下の行に入力すると(下記F4セルにCを入力すると)1行目にカット行が挿入されてしまいます。
こちらは入力されたセルの1つ上に文字が記入されていたら挿入をしない
ようなコードで平気でしょうか?
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Row < 4 Then Exit Sub
If .Column <> 10 Then Exit Sub
If .Count > 1 Then Exit Sub '追加
Application.EnableEvents = False
If .Value = "c" Then
.Interior.ColorIndex = 44
'End If’削除
'If .Value = "c" Then’削除
If .Offset(-1).Value = "" Then '追加
.EntireRow.Cut
.End(xlUp).Offset(1).Activate
Rows(ActiveCell.Row).Insert Shift:=xlDown
End If '追加
End If
Application.EnableEvents = True
End With
End Sub
>なお上記コードで他にもエラーになりうる可能性がありますでしょうか?
あとはそうそうエラーにならないと思いますが、タケタケさんの希望動作を
完璧にしてくれるかどうかですね。
A B C D E F
1 発注日 納入日 名称 数量 単価 請求書C
2 01月15日 01月20日 バルブ 1 1500 C(セル色がピンク)
3 01月19日 01月22日 リレー 2 5200 C(セル色がピンク)
4 01月21日 ねじ 2 100
5 01月31日 ワッシャ 5 200 aaa
6 02月13日 砥石 1 14800
としたときに、F6に「C」を入力してもセルの色は変わりますがF4には
移動しませんね。
これでもよければ大丈夫なのですが。
もしくは、F列に「C」以外入力しないのでしたら問題ありません。
|
|