10 추가 Excel 객체 탐색
10.1 좋은 첫인상 만들기
10.1.1 우리 세상을 위해 착색
rgb(red:=[0,225],green:=[0,225],blue:=[0,225])
이 함수는 색을 나타내는 정수를 생성합니다.VBA는 vbBlack, vbRed 등 소량의 색 값을 미리 정의했다.
색깔의 즐거움
Sub ColorWorksheet()
Dim ws As Worksheet
Dim lRow As Long
Dim lColumn As Long
Dim lColor As Long
Set ws = ThisWorkbook.Worksheets(1)
lRow = 1
lColumn = 1
Application.ScreenUpdating = False
Application.StatusBar = "On column " & lColumn
'256 * 256 * 256 - 1
For lColor = 0 To 256 * 256 * 256 - 1
'record color
ws.Cells(lRow, lColumn).Interior.Color = lColor
'move to next cell
lRow = lRow + 1
'worksheet has 65,536 rows
If lRow = 65537 Then
lRow = 1
lColumn = lColumn + 1
Application.StatusBar = "On column " & lColumn
End If
Next
Set ws = Nothing
Application.ScreenUpdating = True
Application.StatusBar = False
End Sub
색상을 표시할 수 있는 객체에는 ColorIndex 속성이 있습니다.속성 ColorIndex의 값은 색상 패널의 색인과 같습니다.색상 패널은 각 시트마다 고유합니다.
10.1.2 글씨체의 미세한 부분
Font 객체는 글꼴을 나타냅니다.일반 속성으로는 Bold, Color, Italic, Name, Size, Underline 등이 있습니다.Font 객체에 대한 자세한 내용은 다음을 참조하십시오.http://msdn.microsoft.com/en-us/library/ff840959(v=office.15).aspx
코드 목록 10.2: Font 객체 - 간단하고 직관적인 객체
Sub DemonstrateFontObject()
Dim nColumn As Long
Dim nRow As Long
Dim avFonts As Variant
Dim avColors As Variant
For nColumn = 1 To 5
With ThisWorkbook.Worksheets(1).Columns(nColumn).Font
.Size = nColumn + 10
If nColumn Mod 2 = 0 Then
.Bold = True
.Italic = False
Else
.Bold = False
.Italic = True
End If
End With
Next
avFonts = Array("Tahoma", "Arial", "MS Sans Serif", "Verdana", "Georgia")
avColors = Array(vbRed, vbBlue, vbBlack, vbGreen, vbYellow)
For nRow = 1 To 5
With ThisWorkbook.Worksheets(1).Rows(nRow).Font
.Color = avColors(nRow - 1)
.Name = avFonts(nRow - 1)
If nRow Mod 2 = 0 Then
.Underline = True
Else
.Underline = False
End If
End With
Next
End Sub
10.1.3 내부 배치
Interior 객체는 범위 또는 기타 객체의 배경을 나타냅니다.참조:http://msdn.microsoft.com/en-us/library/ff196598(v=office.15).aspx
코드 리스트 10.3: Interior 객체를 사용하여 범위 배경을 변경합니다.
Sub InteriorExample()
Dim rg As Range
'create examples of each pattern
Set rg = ThisWorkbook.Worksheets("Interior").Range("ListStart").Offset(1, 0)
Do Until IsEmpty(rg)
rg.Offset(0, 2).Interior.Pattern = rg.Offset(0, 1).Value
rg.Offset(0, 3).Interior.Pattern = rg.Offset(0, 1).Value
rg.Offset(0, 3).Interior.PatternColor = vbRed
Set rg = rg.Offset(1, 0)
Loop
'create example of each vb defined color constant
Set rg = ThisWorkbook.Worksheets("Interior").Range("ColorListStart").Offset(1, 0)
Do Until IsEmpty(rg)
rg.Offset(0, 2).Interior.Color = rg.Offset(0, 1).Value
Set rg = rg.Offset(1, 0)
Loop
Set rg = Nothing
End Sub
위의 예는 도움말 파일에서 상수 이름과 대응하는 값을 복사해서 이름 (첫 번째 열) 과 값 (두 번째 열) 열에 붙여넣어야 합니다.
코드 목록 10.4: 색상 패널을 거닐다
Sub ViewWorkbookColors()
Dim rg As Range
Dim nIndex As Long
Set rg = ThisWorkbook.Worksheets("Interior").Range("ColorIndexListStart").Offset(1, 0)
For nIndex = 1 To 56
rg.Value = nIndex
rg.Offset(0, 1).Interior.ColorIndex = nIndex
rg.Offset(0, 2).Value = rg.Offset(0, 1).Interior.Color
Set rg = rg.Offset(1, 0)
Next
Set rg = Nothing
End Sub
작업용 얇은 색 패널에는 56개의 색이 저장되어 있으며, 색 인덱스의 범위는 1에서 56까지입니다.
10.1.4 이들 국경은 비자가 필요 없다
Range 객체에는 Borders 속성과 BordersAround 메서드가 있습니다.Range의 테두리를 조작하는 데 사용됩니다.Borders 속성은 Border 객체의 컬렉션을 반환합니다.
Range.Borders 속성, 참조:http://msdn.microsoft.com/en-us/library/ff822605(v=office.15).aspx
Borders 객체, 참조:http://msdn.microsoft.com/en-us/library/ff837809(v=office.15).aspx
Border 객체, 참조:http://msdn.microsoft.com/en-us/library/ff838428(v=office.15).aspx
코드 목록 10.5: Border 객체와 연관된 다양한 속성
Sub BorderLineStyles()
Dim rg As Range
Set rg = ThisWorkbook.Worksheets("Borders").Range("LineStyleListStart").Offset(1, 0)
Do Until IsEmpty(rg)
rg.Offset(0, 2).Borders(xlEdgeBottom).LineStyle = rg.Offset(0, 1).Value
Set rg = rg.Offset(1, 0)
Loop
Set rg = Nothing
End Sub
코드 리스트 10.6: 코드 리스트 10.5의 대체 방법
Sub BorderLineStyles2()
Dim rg As Range
Set rg = ThisWorkbook.Worksheets("Borders").Range("LineStyleListStart")
rg.Offset(1, 2).Borders(xlEdgeBottom).LineStyle = xlContinuous
rg.Offset(2, 2).Borders(xlEdgeBottom).LineStyle = xlDash
rg.Offset(3, 2).Borders(xlEdgeBottom).LineStyle = xlDashDot
rg.Offset(4, 2).Borders(xlEdgeBottom).LineStyle = xlDashDotDot
rg.Offset(5, 2).Borders(xlEdgeBottom).LineStyle = xlDot
rg.Offset(6, 2).Borders(xlEdgeBottom).LineStyle = xlDouble
rg.Offset(7, 2).Borders(xlEdgeBottom).LineStyle = xlLineStyleNone
rg.Offset(8, 2).Borders(xlEdgeBottom).LineStyle = xlSlantDashDot
Set rg = Nothing
End Sub
expression.BorderAround(LineStyle, Weight, ColorIndex, Color, ThemeColor)
범위를 둘러싸고 경계를 생성하는 데 사용됩니다.참조:http://msdn.microsoft.com/en-us/library/ff197210(v=office.15).aspx
10.1.5 포맷된 숫자
NumberFormat 속성은 범위 값을 내보내는 방법을 설명하는 문자열입니다.
Excel 도움말에서 검색: 사용자 정의 디지털 형식을 만들거나 삭제하여 형식 문자열에 대한 자세한 설명을 볼 수 있습니다.
코드 리스트
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Me.Range("FormatCode").Address Then
ApplyFormatCode
End If
End Sub
Private Sub ApplyFormatCode()
'if we attempt to apply an invalid
'number format code an error will
'occur - we need to catch it
On Error GoTo ErrHandler
'clear any prior invalid code message
Me.Range("FormatCode").Offset(0, 1).Value = ""
'attempt to apply the format code
Me.Range("TestFormatCode").NumberFormat = Me.Range("formatcode").Value
Exit Sub
ErrHandler:
'OOPS-invalid format code
'set the format to general
Me.Range("TestFormatCode").NumberFormat = "General"
'let the user know what happened
Me.Range("FormatCode").Offset(0, 1).Value = "Invalid Format Code!"
End Sub
10.1.6 워크시트 크기 조절 시 많은 시간 절약
다음 그림에서는 NumberFormat를 수정하여 숫자 표시를 확대/축소합니다.
코드 목록 10.8: 보고서에 동적 축소 제공
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Me.Range("ScaleFactor").Address Then
ScaleData
End If
End Sub
Private Sub ScaleData()
If Me.Range("ScaleFactor").Value = "Normal" Then
Me.Range("ScaleRange").NumberFormat = "#,##0"
Else
Me.Range("scaleRange").NumberFormat = "#,"
End If
End Sub
10.2 차트 작업
10.2.1 처음부터 차트 만들기
코드 목록 10.9: ChartWizard 방법을 사용하여 새 차트 만들기
'creates a chart using the ChartWizard Method
Sub CreateExampleChartVersionI()
Dim ws As Worksheet
Dim rgChartData As Range
Dim chrt As Chart
Set ws = ThisWorkbook.Worksheets("Basic Chart")
Set rgChartData = ws.Range("B1").CurrentRegion
'create a new empty chart
Set chrt = Charts.Add
'embed chart in worksheet - this creates a new object
Set chrt = chrt.Location(xlLocationAsObject, ws.Name)
'use chart wizard to populate/format empty chart
chrt.ChartWizard _
Source:=rgChartData, _
Gallery:=xlColumn, _
Format:=1, _
PlotBy:=xlColumns, _
categorylabels:=1, _
serieslabels:=1, _
HasLegend:=True, _
Title:="Gross Domestric Product Version I", _
Categorytitle:="year", _
valuetitle:="GDP in billions of $"
Set chrt = Nothing
Set rgChartData = Nothing
Set ws = Nothing
End Sub
코드 목록 10.10:Chart 객체를 사용하여 차트 만들기
'creates a chart using basic chart properties and Methods
Sub CreateExampleChartVersionII()
Dim ws As Worksheet
Dim rgChartData As Range
Dim chrt As Chart
Set ws = ThisWorkbook.Worksheets("Basic Chart")
Set rgChartData = ws.Range("B1").CurrentRegion
'create a new empty chart
Set chrt = Charts.Add
'embed chart in worksheet - this creates a new object
Set chrt = chrt.Location(xlLocationAsObject, ws.Name)
With chrt
.SetSourceData rgChartData, xlColumns
.HasTitle = True
.ChartTitle.Caption = "Gross Domestric Product Version II"
.ChartType = xlConeColClustered
With .Axes(xlCategory)
.HasTitle = True
.AxisTitle.Caption = "Year"
End With
With .Axes(xlValue)
.HasTitle = True
.AxisTitle.Caption = "GDP in billions of $"
End With
End With
Set chrt = Nothing
Set rgChartData = Nothing
Set ws = Nothing
End Sub
10.2.2 차트 검색
작업표처럼 도표 페이지를 인용할 수 있다
Dim chrt1 As Chart
Dim chrt2 As Chart
'set a reference to the chart sheet named Chart4
Set chrt1 = ThisWorkbook.Charts("Chart4")
'set a reference to the 2nd chart sheet in this workbook
Set chrt2 = ThisWorkbook.Charts(2)
차트가 워크시트에 포함된 경우 ChartObjects 컬렉션을 사용해야 합니다.
Dim ws As Worksheet
Dim chrt1 As Chart
Dim chrt2 As Chart
Set ws = ThisWorkbook.Worksheets(1)
'set a reference to the embedded chart named Chart4
Set chrt1 = ws.ChartObjects("Chart4").Chart
'set a reference to the 2nd embedded chart
Set chrt2 = ws.ChartObjects(2).Chart
코드 목록 10.11: 차트 제목을 사용하여 차트 찾기
'searches charts on a worksheet by chart title
Function GetChartByCaption(ws As Worksheet, sCaption As String) As Chart
Dim cht As Chart
Dim chtObj As ChartObject
Dim sTitle As String
Set cht = Nothing
'loop through all chart objects on the ws
For Each chtObj In ws.ChartObjects
'make sure current chart object chart has a title
If chtObj.Chart.HasTitle Then
sTitle = chtObj.Chart.ChartTitle.Caption
'is this title a match?
If StrComp(sTitle, sCaption, vbTextCompare) = 0 Then
' bingo
Set cht = chtObj.Chart
Exit For
End If
End If
Next
Set GetChartByCaption = cht
Set chtObj = Nothing
Set cht = Nothing
End Function
Sub TestGetChartByCaption()
Dim ws As Worksheet
Dim cht As Chart
Set ws = ThisWorkbook.Worksheets("Basic Chart")
Set cht = GetChartByCaption(ws, "I am the Chart Title")
If Not cht Is Nothing Then
MsgBox "Found chart"
Else
MsgBox "Sorry, Can not Found chart"
End If
Set cht = Nothing
Set ws = Nothing
End Sub
코드 목록 10.12: 기본 그래프 포맷
Sub FormattingCharts()
Dim ws As Worksheet
Dim cht As Chart
Dim ax As Axis
Set ws = ThisWorkbook.Worksheets("Basic Chart")
Set cht = GetChartByCaption(ws, "GDP")
If Not cht Is Nothing Then
'Format category axis
Set ax = cht.Axes(xlCategory)
With ax
.AxisTitle.Font.Size = 12
.AxisTitle.Font.Color = vbRed
End With
'Format value axis
Set ax = cht.Axes(xlValue)
With ax
.HasMinorGridlines = True
.MinorGridlines.Border.LineStyle = xlDashDot
End With
'format plot area
With cht.PlotArea
.Border.LineStyle = xlDash
.Border.Color = vbRed
.Interior.Color = vbWhite
.Width = cht.PlotArea.Width + 10
.Height = cht.PlotArea.Height + 10
End With
'format misc other
cht.ChartArea.Interior.Color = vbWhite
cht.Legend.Position = xlLegendPositionBottom
End If
Set ax = Nothing
Set cht = Nothing
Set ws = Nothing
End Sub
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.