2014-09-05 3 views
0

VBA를 사용하여 동적으로 셰이프를 만드는 워크 시트가 많이 보호되어 있습니다. 셰이프가 만들어지고 잠금 해제 된 다음 워크 시트가 다시 보호됩니다. 이 (다른 형상으로 제작 도구 중)에 사용자 도면 시트의 일부 모양을 만들 수 있도록보호 된 VBA 워크 시트의 셰이프에서 텍스트 편집 비활성화

Private Sub cmdTextBox_Click() 
    Dim Shp As Shape 
    Dim X, Y, Side As Single 

    X = ActiveSheet.Range("D12").Left 
    Y = ActiveSheet.Range("D12").Top 

    ActiveSheet.Unprotect 

    Set Shp = ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, X, Y, 250, 30) 
    Shp.Name = "textbox_" & ActiveSheet.Shapes.Count 

    Set Shp = ActiveSheet.Shapes("textbox_" & ActiveSheet.Shapes.Count) 
    Shp.TextFrame.Characters.Font.Name = "Arial" 
    Shp.TextFrame.Characters.Font.Size = "16" 
    Shp.Fill.BackColor.RGB = RGB(255, 255, 0) 
    Shp.Fill.Transparency = 0.2 
    Shp.Line.Transparency = 1 
    Shp.TextFrame.HorizontalAlignment = xlHAlignCenter 
    Shp.TextFrame.VerticalAlignment = xlVAlignCenter 
    Shp.TextFrame.Characters.Font.ColorIndex = 1 
    Shp.TextFrame.Characters.Font.Bold = True 
    Shp.TextFrame.Characters.Text = "Right-click to modify format" 
    Shp.Locked = False 

    ActiveSheet.Protect 

    End Sub 

: 다음 텍스트 상자 형상 대한 단편이다. 내 문제는 보호 된 통합 문서 (특히 대화 상자에서 데이터를 배치/입력 할 수 있도록 사용자를 제한하려는 경우)는 모든 유형의 모양의 "텍스트 편집"옵션을 사용할 수 없게한다는 것입니다. I 중 하나

A)는 잠금 해제 모양 또는 ... 모양이 (선정 된 각 모양은 이름 접 두부 등으로 만든 것을 감지)() 선호

B의 "텍스트 편집"옵션을 사용하려면 어떻게 시트를 보호 해제하여 "텍스트 편집"옵션을 활성화 한 다음 선택 취소 또는 다른 항목 선택시 다시 보호 할시기를 알기 위해 쉽게 .name 식별을 위해 rect_ 또는 circle_를 사용하십시오. '개체 편집'과 시트를 보호 (약간 덜으로 바람직) 매크로 기록 된 qick에서 가져온

답변

0

코드, 사용 : 모양 포맷으로 이동하는 경우,

ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:=True 

그러나> 속성 대신 옵션이 있어야합니다 거기에 잠금 텍스트. 객체 편집 옵션을 사용하면 크기를 조정하거나 삭제할 수 있기 때문에 선호하는 옵션이 될 것입니다. 물론 이것은 실제로 사용자가 그 객체로 수행 할 수 있기를 원하는 것에 달려 있습니다.

+0

모양이 완전히 잠금 해제되어 있고 시트에서 직접 편집 할 수있는 유일한 개체입니다. 그것들은 크기를 재조정하고 형식을 지정하고 옮길 수 있어야합니다. 그들이 필요로하는 유일한 일은 textarea 속성을 직접 편집하는 것입니다. 대화 상자 창에서이 작업을 수행 할 수는 있지만 사용자가 모양을 마우스 오른쪽 단추로 클릭하고 텍스트 편집 옵션을 사용하는 것을 선호합니다. –