2013-07-12 4 views
0

셰이프의 텍스트 필드를 현재있는 레이어 이름으로 설정하려고합니다 (Visio 2010). 나는이에 대한 공식을 설정할 수 있어야합니다!Visio 페이지 셰이프 셰이프 시트 수식의 셰이프 시트 참조

= ThePage Layers.Name [LayerMember]

하지만 LayerMember 문자열과 모양, 즉 여러 층에있을 수 있기 때문에 문제가 해결되지 않습니다, LayerMember = 3이면 3 층이지만 3 층이라면 3, 2, 5가 될 수 있습니다. 따라서 LEFT (LayerMember, 1)을 사용하면 목록의 첫 번째 값을 가져 오지만 위의 수식의 인덱스 필드에 그 값을 넣는 것은 작동하지 않습니다. 인덱스 필드에 정적 값을 넣는 것은 잘 작동하지만 셰이프 레이어를 변경하고 셰이프의 텍스트를 레이어 이름으로 변경하고 싶습니다.

LEFT (LayerMember, 1)을 사용하면 문자열을 반환합니다. 문자열 값을 숫자로 변환하여 페이지의 셰이프 시트에서 레이어 이름 값을 가져 오는 방법을 찾을 수 없습니다.

저는 Visio가 새로 도입되었지만 어떤 이유로이 문제를 해결할 수 없습니다.

답변

1

레이어는 모양의 속성이므로 shpObj.Layer (1) .Name을 사용해보십시오. 그러면 셰이프가있는 첫 번째 레이어의 이름이 표시됩니다. 셰이프가 실제로 레이어에 있는지 확인하려면 shjObj.LayerCount를 확인해야합니다.

+0

존 - 고마워요.하지만 내가하려는 일에 효과가 없습니다. 난 그냥 내가 만든 도형 데이터 필드의 값을 설정하기 위해 객체의 도형 시트에 수식을 입력하려고합니다. 셰이프 데이터의 값을 레이어의 이름과 같게하고 ThePage를 통해 백그라운드 시트의 시트 데이터에 액세스해야하는 레이어의 이름을 가져 오려고합니다. Layer.Name [Index value] - 사용하려고합니다. 위의 인덱스 값으로 셰이프의 레이어 멤버 값을 반환하고 계속해서 수식 오류가 발생합니다. – Greg

+0

셰이프 시트를 통해 셰이프의 텍스트를 설정할 수 없으므로 어쨌든 VBA를 사용하는 것이 좋습니다. –