2014-03-26 2 views
3

VBA, Excel 이름을 사용하지 않고 특정 스타일을 설정하는 방법은 무엇입니까?VBA, Excel 이름을 사용하지 않고 특정 스타일을 설정하는 방법은 무엇입니까?

이름이 지역화되어있어 다른 언어 Excel 버전에서 사용되는 내 앱에는 쓸모가 없습니다. 나는 떨어져 생각할 수

UGLY 솔루션은 .... 숨겨진 시트의 일부 셀에 적용하는 스타일의 목록을 유지하고 자신의 이름을 확인하고 실행 시간을 사용하는 것입니다

그러나 더 쉬운 방법이있을거야, 그렇지? MS는 Excel의 중요한 측면을 망칠 수 없었습니다. 당신이, 당신이 당신의 자신의 스타일을 만들고 그들에게 이름을 지정할 수 있습니다 배포하는 통합 문서에서 스타일을 확립 할 목적으로

Selection.Style = "Akcent 6" 
Range("G4").Select 
Selection.Style = "60% — akcent 6" 
Range("G5").Select 
Selection.Style = "Akcent 5" 
+1

[this] (http://www.jkp-ads.com/Articles/styles06.asp) 같은 것이 있습니까? –

+0

예. 그러나 나는 그것을 피하려고합니다. 왜 MS가 VBA에서 스타일 이름을 현지화하기로 결정했는지 전혀 모르겠습니다. 그것은 Excel 함수에 대해 그런 일을하지 않습니다 ... : | –

답변

3

:

PS는 여기에 몇 가지 예시 등록 매크로의 스타일입니다. 예 przemo1, przemo2 등 예컨대

를 들어

Sub MakeAStyle() 
    ActiveWorkbook.Styles.Add Name:="PrZemo1" 
    With ActiveWorkbook.Styles("PrZemo1") 
     .IncludeNumber = True 
     .IncludeFont = True 
     .IncludeAlignment = True 
     .IncludeBorder = True 
     .IncludePatterns = True 
     .IncludeProtection = True 
    End With 
    With ActiveWorkbook.Styles("PrZemo1").Font 
     .Name = "Arial Narrow" 
     .Size = 11 
     .Bold = False 
     .Italic = False 
     .Underline = xlUnderlineStyleNone 
     .Strikethrough = False 
     .Color = -16776961 
     .TintAndShade = 0 
     .ThemeFont = xlThemeFontNone 
    End With 
    With ActiveWorkbook.Styles("PrZemo1") 
     .HorizontalAlignment = xlCenterAcrossSelection 
     .VerticalAlignment = xlCenter 
     .ReadingOrder = xlContext 
     .WrapText = True 
     .Orientation = 0 
     .AddIndent = False 
     .ShrinkToFit = False 
    End With 
End Sub 

여기

1 일부 COLOR들과 관련된 인덱스이다 EDIT 번호 :

colors

+0

일부 스타일의 모든 속성을 얻는 방법을 알고 있습니까? (그래서 바퀴를 다시 만들지 않고 붙여 넣기를 복사 할 수 있습니까?) –

+0

잘 대답 : http://www.excelforum.com/excel-general/399706-style-definitions-in-vba.html –

+1

@przemo_li [** 여기 * *] (http://s3.postimg.org/5kofnbt4j/Untitled.png) 스타일의 모든 속성을 선택하거나'Dim s as Style' 다음에's.'를 입력하면 모든 속성에 대한 인텔리 센스를 얻어야합니다 –

2

여기의 코드는 영어 버전 이름을 사용하여 기본 제공 스타일 이름의 지역화 된 버전을 찾는 데 사용할 수 있습니다. 효율적인 것은 아니지만 아마도 그렇게 할 필요는 없습니다.

Public Sub Foo() 
    localisedStyleName = FindLocalisedBuiltinStyleName("20% - Accent6") 
End Sub 

Public Function FindLocalisedBuiltinStyleName(EnglishStyleName) As String 
    accentNumber = 0 
    percentage = 0 

    If Strings.Left(EnglishStyleName, 6) = "Accent" Then 
     AccentNumber = CInt(Strings.Mid(EnglishStyleName, 7, 1)) 
    Else 
     AccentNumber = CInt(Strings.Mid(EnglishStyleName, 13, 1)) 
     Percentage = CInt(Strings.Mid(EnglishStyleName, 1, 2)) 
    End If 

    ThemeColorIndex = AccentNumber + 4 
    FontToFind = 2 

    Select Case Percentage 
    Case 0 
     FontToFind = 1 
     TintAndShadeToFind = 0 
    Case 20 
     TintAndShadeToFind = 0.799981688894314 
    Case 40 
     TintAndShadeToFind = 0.599993896298105 
    Case 60 
     FontToFind = 1 
     TintAndShadeToFind = 0.399975585192419 
    End Select 

    For i = 1 To ActiveWorkbook.Styles.Count 
     ThemeColor = ActiveWorkbook.Styles.Item(i).Interior.ThemeColor 
     TintAndShade = ActiveWorkbook.Styles.Item(i).Interior.TintAndShade 
     Font = ActiveWorkbook.Styles.Item(i).Font.ThemeColor 

     If ThemeColor = ThemeColorIndex And Abs(TintAndShade - TintAndShadeToFind) < 0.001 And Font = FontToFind Then 
      FindLocalisedBuiltinStyleName = ActiveWorkbook.Styles.Item(i).NameLocal 
      Exit Function 
     End If 
    Next 

    FindLocalisedBuiltinStyleName = "" 

End Function 
관련 문제