2013-01-17 7 views
0

나는 아래와 같이 Excel을 공유 엑셀이라고합니다.VBA Excel - 특정 행에 붙여 넣지 않도록 사용자를 제한하는 방법?

enter image description here

지금 내가 GRAY로 backcolour 한 행에 대한 붙여 넣기 옵션을 (이 런타임에 고정되지 않은 행이 회색 색상을 얻을 수 있습니다) 허용해서는 안된다. 그것으로 sharedExcel 및 나는 Lock 속성을 사용할 수 없습니다. 모든 도움이 크게 고맙게 받아 들여집니다.

+1

비밀번호 .. 실행 시간 동안 당신이 확실 할 행을해야 만이 경우 복사 붙여 넣기를 할 수있는 다음, 그레이을 얻는다 너는 내 팁을 따라 간다. 그렇지 않은 경우 코드에서 어떤 셀을 제한해야하는지 어떻게 알 수 있습니까? 따라서 작업 흐름은 회색 만들기 -> 보호 -> 붙여 넣기가 아닙니다. 또는 S.NO가 행을 보호 할 수 있는지 결정하는 요소가 될 수 있습니까? – bonCodigo

+0

@bonCondigo, 안녕하세요, 귀하의 답변을 주셔서 감사합니다.하지만 귀하의 워크 플로우를 사용할 수 없습니다. 런타임에 그레이 컬러 행은 그 행에 붙여 넣을 수있게해야 할 때 화이트 컬러를 얻을 수있는 경우를 생각해보십시오. 이렇게하려면 시트를 보호 해제하고 붙여 넣기를 허용해야하지만 Excel이 공유 모드 일 때 보호를 해제 할 수는 없습니다. 우리가 그렇게한다면'런타임 에러 '와 같은 에러를 던질 것입니다 1004'객체가이 메소드를 지원하지 않습니다' –

+0

글쎄, 당신은''컬러를 검사하기위한 조건을 가지고 있습니다. 일했다. – bonCodigo

답변

0

내가 선 다음 코딩 한이 문제에 약간의 시간을 보내고 후. 괜찮아. 여기에 PasteSheet 코딩 목적으로 다른 스프레드 시트를 찍었지만 언제든지 사용자에게 표시하지는 않습니다. 은`컬러 Gray`에 따라 ☺ 범위 보호


Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
If Application.CutCopyMode Then 
    SelectedRow = ActiveCell.Row 
    With Sheets("PasteSheet") 
     .Activate 
     .Range("A1").PasteSpecial xlPasteValues 
     CR = Selection.Rows.Count 
    End With 
    Worksheets("ActualSheet").Activate 
    For k = SelectedRow To (SelectedRow + CR) 
     If Worksheets("ActualSheet").Cells(k, 30).Interior.Color = RGB(215, 215, 215) Then 
      Application.EnableEvents = False 
      MsgBox "Pasting is not allowed here!" 
      'Clearing data in PasteSheet 
      Worksheets("PasteSheet").Cells.ClearContents 
      Worksheets("ActualSheet").Activate 
      Application.EnableEvents = True 
      Exit Sub 
     End If 
    Next 
End If 

최종 하위

0

true/false를 확인하는 데 사용되는 속성으로 색상을 사용하면 좋지 않은 동작입니다. 예를 들어 콤보 상자 등을 통해 액세스 할 수 있도록 0/1 또는 TRUE/FALSE로 열 (필요한 경우 숨김)을 추가하는 등의 방법으로이 문제를 해결할 수 있습니다 (이 cbb 상자를 클릭하여 회색으로 계속 조정할 수 있음) .

시트 이벤트 on_Change를 통해 동적으로 구성된 범위를 확인할 수 있습니다. 시트 이벤트에 대한 기본 구문 :

Private Sub Worksheet_Change(ByVal Target As Range) 
'Set range dynamically instead of this hard coded example 
If Not Intersect(Target, Thisworkbook.Sheets(1).Range("A1:A10")) Is Nothing Then 
    'Do something 
End If 
End Sub 
관련 문제