두 개 이상의 셀을 동시에 변경할 수 없도록하는 코드가 있습니다. 그러나 한 번에 둘 이상의 셀을 삭제할 수 있습니다. 아래 코드는 제가 사용하고 있으며 잘 작동합니다.참조 Variant Array to Column
Dim vClear As Variant
Dim vData As Variant
'This prevents more than one cell from being changed at once.
'If more than one cell is changed then validation checks will not work.
If Target.Cells.Count > 1 Then
vData = Target.Formula
For Each vClear In vData
If vClear <> "" Then 'If data is only deleted then more than one cell can be changed.
MsgBox "Change only one cell at a time", , "Too Many Changes!"
Application.Undo
Exit For
End If
Next
End If
데이터를 삭제할 때 내가 추가하려고하는 것은 데이터가 삭제되는 열을 확인하고 싶습니다. 요구 사항을 충족하는 열이 있으면 다른 열의 해당 행에있는 데이터도 함께 삭제해야합니다.
다음은 내가하려는 일의 예입니다. 확인해야하는 열이 두 개 있습니다 (G & H입니다.) 데이터가이 두 열 중 하나에서 삭제 된 경우에도 열 I도 삭제되기를 원합니다. D5 : G10의 범위를 선택하고 그 내용을 삭제한다고 가정 해 봅시다. G 열은 하나의 요구 사항이므로 I5도 삭제해야합니다. 만약 내가 D5 : F10을 삭제한다면 컬럼 G 나 H가 선택되지 않았기 때문에 컬럼 I에서 아무 것도 삭제하지 않을 것입니다.
다음은 내가 수행하려고 시도하는 코드의 예입니다. 나는 아래 코드를 사용하는 것이 불가능하다는 것을 알고있다. 이것은 내가하려는 일에 대한 간략한 요약 일 뿐이며, 또한 변형을 칼럼을 검사하는 방법을 알 수 없다. 누군가가이 작업을 수행하는 방법을 알고 있다면 알려주십시오.
Dim vClear As Variant
Dim vData As Variant
'This prevents more than one cell from being changed at once.
'If more than one cell is changed then validation checks will not work.
If Target.Cells.Count > 1 Then
vData = Target.Formula
For Each vClear In vData
If vClear <> "" Then 'If data is only deleted then more than one cell can be changed.
MsgBox "Change only one cell at a time", , "Too Many Changes!"
Application.Undo
Exit For
Else
If vClear = "" Then
If vClear.Column = 7 Or vClear.Column = 8 Then
ActiveSheet.Cells(vClear.Row, 9) = ""
End If
End If
End If
Next
End If
우수 감사합니다. 이제는 인터 섹트 (Intersect)를 알았습니다. 전에는 들어 본 적이 없었습니다. 코드에서 우수한 주석 진술. 도움을 주셔서 감사합니다. – Chris