|
こんにちは。かみちゃん です。
> 最終コードです
[#41549]でponponさんが提示されたコードでも、
[#41550]でkazuoさんご自身が提示されたコードでも、動作確認できています。
[#41552]および[#41545]の[名前なし]さん(どなたか存じませんが)からのアドバ
イスを加味した以下のコードでも動作確認できています。
[#41546]でkazuoさんがおっしゃっている
> ↑でB列を削除してもC,E列の値そのまま残ってしまいます
> ^^^^^^^^^^^^^^^^^^^^^^^^^^
> ★C,E列がクリアにならないのです。★ここを何とかしたいのですが
という事象は発生しません。
今一度確認していただけないでしょうか?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim hinmei As String, keijyou As String
Dim myRange As Range
Dim endRow As Long
Dim a As Variant
Dim i As Variant
With Target
' On Error GoTo errEnd
If .Column <= 1 Or .Column >= 4 Or _
.Row = 1 Then End
Select Case .Column
' Case 1
' If .Offset(, 1).Value = "" Then Exit Sub
' hinmei = .Value
' keijyou = .Offset(, 1).Value
' GoTo kakuninEvent
Case 2
If .Offset(, -1).Value = "" Then Exit Sub
hinmei = .Offset(, -1).Value
keijyou = .Value
GoTo kakuninEvent
Case 3
If .Value = "式" Then
Application.EnableEvents = False
.Offset(, 1).Value = 1
.Offset(0, 2).Select
Application.EnableEvents = True
End If
End Select
Exit Sub
kakuninEvent:
Set myRange = Range("A2", Cells(Cells.Rows.Count, 1).End(xlUp).Offset(-1)).Resize(, 5)
a = myRange.Value
Application.EnableEvents = False
Range("C" & .Row).ClearContents
Range("E" & .Row).ClearContents
Application.EnableEvents = True
For i = 1 To myRange.Rows.Count
If hinmei = a(i, 1) And keijyou = a(i, 2) Then
Application.EnableEvents = False
Range("C" & .Row).Value = a(i, 3)
Range("E" & .Row).Value = a(i, 5)
Application.EnableEvents = True
Exit For
End If
Next i
End With
'errEnd:
End Sub
あと、[#41545]で[名前なし]さんがおっしゃっている、
> 結局、提示されたコードでどんな処理をしたいのですか?
> A列・B列の値が、編集された行のA列・B列が同じ値で
> 最も下の行にあるC列の値を、編集された行のC列に出力?
>
> 前提条件が書かれていないので、無用なやりとりが続いているのでは
> ないかと思いますがいかがでしょうか?
については、私も同感です。
A列・B列の値が同じであれば、C列、E列も同じ値という前提なら問題ないのですが、
A列・B列の値が同じ場合、C列、E列は、最下行の値を表示したいというのなら、
異なる結果が得られます。
|
|