rand(life)

[VBA] 코드 모음9 - 셀,범위 선택 관련 본문

컴퓨터/엑셀

[VBA] 코드 모음9 - 셀,범위 선택 관련

flogsta 2017. 5. 13. 11:06


'[제목줄 제외하고 아래끝까지 범위 재설정]

With Rng

Set Rng = .Offset(1).Resize(.Rows.Count - 1, .Columns.Count)

End With


'[autofill 채우기]

날짜.AutoFill Destination:=날짜.Resize(15), Type:=xlFillWeekdays, '평일날짜로만 채움

' Type:=xlFillCopy '셀복사로 채움


 '[한 셀 안의 문자열 중 일부만 첨자 및 색입히기]

With Range("A1").Characters(4, 6).Font '4~6번째 문자

.Superscript = True '위첨자

.Subscript = False '아래첨자

.Color = vbRed

End With


[범위중 두 번째 열 지정]

Set r = sht.Range("A1").CurrentRegion.Columns(2)

'

For Each c In r.Cells

'위와 같이 지정했을때는 for 구문뒤에 .cells 추가

'vbcr 다음줄로 줄바꿈

[replace]

sht.Cells.Replace what:=찾을내용, replacement:=바꿀내용

'cells =모든셀


 

[C2셀에서 데이터가 있는 오른쪽 끝까지 선택]

Activesheet.range("c2", cells(2,columns.count).end(1)).select

 

[데이터가 있는 끝행 설정법]

Set Rng = Worksheets("대상자목록").Range("a2:a" & Cells(Rows.Count, "A").End(3).Row)

 

 

[제목줄 하나만 있을때,도 포함하여 아래로 추가하는 법]

B2셀에 제목이 있다고 하면

Set rIni = wsI.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0)

rIni.Offset(0, -1).~~~~~

 

 

range.autofill (목적지셀범위, 타입)

타입으로 "원본이 날짜일때, ,평일,,년 단위로 채울 수 있다)

또는 숫자사이에 덧셈/배수 관계가 있는것으로 가정하고 채울 수 있다

(1,3,5를 끌어채우기하면 7,9,11... 이 채워질것 같지만 실제로는 그렇지 않다)

 

 

[보이는 셀만 선택]

specialcells(12).selection

 

255

worksheet_selectionChange 이벤트에서 선텍한 "셀이 특정범위 안에 있으면" 조건

if union(Target, rng).Address = rng.Address then

 

256

변경된 셀과 특정범위가 겹치는지의 조건

if intersect(Target, rng) is nothing then

'이벤트 프로시저에서 변경된 셀이 rng범위와 겹치지 않으면

 


 

지정범위 내의 전체 행선택

set rng= range("a1:d10")

rng.entirerow.select

 

97

range.characters(s, l)

s위치부터 l 만큼의 길이만큼 문자선택

 


 

[자동필터 걸린 부분만 복사]

AutoFilter(Field, Criteria1, Operator, Criteria2, VisibleDropDown)

field 필터를 걸 위치

criteria1 필터내용

visibledropdown : 화살표표시 (0=false, 1=true)

operator

xlAnd 1 논리곱

xlBottom10Items 4 하위 10

xlBottom10Percent 6 하위10%

xlFilterCellColor 8 셀색깔

xlFilterDynamic 11 Dynamic filter

xlFilterFontColor 9 폰트색깔

xlFilterIcon 10 Filter icon

xlFilterValues 7 Filter values

xlOr 2 논리합

xlTop10Items 3 상위10

xlTop10Percent 5 상위10퍼센트

 

With rngColumn

.AutoFilter 1, T, , , 0

.Offset(1, -3).Resize(.Rows.Count - 1, 2).Copy rng

.Offset(1).Resize(.Rows.Count - 1, 1).Copy rng.Offset(, 2)

.Offset(1, 2).Resize(.Rows.Count - 1, 2).Copy rng.Offset(, 3)

.AutoFilter

End With

End If

Next i

End Sub



 

[특정 행 제외하고 숨기기]

Sub Macro()

Dim rng As Range

Set btnButton = ActiveSheet.Buttons(Application.Caller) '프로서저를 호출한 단추 컨트롤 확인

strCaption = btnButton.Caption '버튼의 캡션을 변수에 할당

Application.ScreenUpdating = False

Select Case strCaption '버튼의 캡션에 따라 동작 결정

Case "Open"

Cells.EntireRow.Hidden = False '숨긴 열 보이기

btnButton.Caption = "Hiden" '버튼 캡션 바꾸기

Case "Hiden"

With Range("B4:B" & Cells(Rows.Count, 2).End(3).Row)

Set rng = .Find(Range("H3").Value, , , 1)

If Not rng Is Nothing Then

.EntireRow.Hidden = True '전체 열숨기기

.ColumnDifferences(rng).EntireRow.Hidden = False 'rng에 해당하는 행 보이기

End If

End With

btnButton.Caption = "Open" '버튼 캡션 바꾸기

End Select

End Sub