반응형


매크로 기록기로 목표값찾기

Sub 매크로1()
    ActiveCell.GoalSeek goal:=0, changingcell:=ActiveCell.Offset(0, -13).Range( _
        "A1")
End Sub



ActiveCell.GoalSeek goal:=0,(현재 선택된셀의 목표값을 0으로 설정
changingcell:=ActiveCell.Offset(0, -13)
선택한 셀에서 왼쪽으로 13번째 셀 값을 변화시킨다.

.Range("A1")

반응형

'VBA' 카테고리의 다른 글

VBA에서 ":"의 사용법  (0) 2022.04.19
Functions Visual Basic for Applications  (0) 2022.04.13
Worksheets  (0) 2022.03.28
주석 블록 설정 및 해제 단축키  (0) 2022.03.27
엑사남 강의 23강 UserForm  (0) 2022.03.25
반응형


Worksheets(3).Activate '왼쪽부터 3번째 워크시트 활성화
Worksheets("Sheet411").Activate '이름이 "Sheet411" 워크시트 활성화

반응형

'VBA' 카테고리의 다른 글

Functions Visual Basic for Applications  (0) 2022.04.13
목표값찾기 단축 매크로  (0) 2022.03.29
주석 블록 설정 및 해제 단축키  (0) 2022.03.27
엑사남 강의 23강 UserForm  (0) 2022.03.25
엑사남 강의 22강 InputBox  (0) 2022.03.24
반응형

VBA에서 주석을 한번에 설정하고 해제하기 위한 단축키를 찾아봤다.

그런데 아무리 찾아봐도 단축키는 없다.

하지만 방법은 있다.

 

 

1. 편집도구 모음을 꺼내 놓는다.

1-1. 보기 > 도구 모음 > 편집도구

 

 

2. 편집 도구 창이 이렇게 뜬다.

 

편집도구
편집도구

 

 

3. 주석블록 설정 및 해제하기

3-1. 주석블록 설정하기

주석블록 설정
주석블록 설정

3-2. 주석블록 해제하기

주석블록 해제
주석블록 해제

주석블록 설정 및 해제하는 방법

https://youtu.be/F57Ty6Wif0g

 

반응형

'VBA' 카테고리의 다른 글

목표값찾기 단축 매크로  (0) 2022.03.29
Worksheets  (0) 2022.03.28
엑사남 강의 23강 UserForm  (0) 2022.03.25
엑사남 강의 22강 InputBox  (0) 2022.03.24
엑사남 강의 21강 색상표 만들기  (0) 2022.03.21
반응형

 

SelectionMargin : True

커서가 중앙에서 조금 오른쪽으로 치우친것 같아 보인다.

 

SelectionMargin : True
SelectionMargin : True

SelectionMargin : False

커서가 중앙에서 깜빡깜빡한다.

SelectionMargin : False
SelectionMargin : False

 

성별은 '남' 또는 '여'  두가지만 입력 받도록 한다.

Private Sub UserForm_Initialize()
    Me.ComboBox1.List = Array("남", "여")
End Sub

 

 

ComboBox  style 선택한다.

0-fmStyleDropDownCombo

2-fmStyleDropDownList   (실제 콤보박스의 리스트에 있는 항목만 입력 가능하다.)

 

 

Val(Me.TextBox2) : TextBox2에 들어온 숫자를 숫자값으로 바꾼다.

 

 

23. Userform.xlsm
0.03MB

반응형

'VBA' 카테고리의 다른 글

Worksheets  (0) 2022.03.28
주석 블록 설정 및 해제 단축키  (0) 2022.03.27
엑사남 강의 22강 InputBox  (0) 2022.03.24
엑사남 강의 21강 색상표 만들기  (0) 2022.03.21
엑사남 강의 18강 Union  (0) 2022.03.13
반응형

Application.InputBox
Application.InputBox

InputBox(Prompt As String, [ title ], [ default ], [ Left ], [ Top ], [ helpfile, context ], [Type])

 

여기서  [ ]안은 입력하지 않아도 프로그램이 실행된다.

 

여기서 주로 이용하는 것은

InputBox(Prompt As String, [ title ], [ default ], [ Left ], [ Top ], [ helpfile, context ], [Type])

 

Type설명

의미
0 수식
1 숫자
2 텍스트
4 논리값
8 범위
16 오류값
64 값의 배열

여기서 일단 8(범위)만 알고 넘어가자.

 

 

22. inputbox.xlsm
0.06MB

 

반응형

'VBA' 카테고리의 다른 글

주석 블록 설정 및 해제 단축키  (0) 2022.03.27
엑사남 강의 23강 UserForm  (0) 2022.03.25
엑사남 강의 21강 색상표 만들기  (0) 2022.03.21
엑사남 강의 18강 Union  (0) 2022.03.13
엑사남 17강 RemoveDuplicate, Array  (0) 2022.03.12
반응형

엑사남 강의 21강 색상표 만들기

 

Option Explicit  '정의하지 않는 변수가 있으면 오류를 발생시킨다.

Sub colortext01()
    Dim rngD As Range
    Dim rngt As Range
    
    Set rngD = Range("rngR") 'rngR이라고 이름 정의한 영역을 rngD변수에 넣는다.
    rngD.Interior.ColorIndex = 0 '영역을 초기화한다.
    
    For Each rngt In rngD
        If rngt <> "" Then
            rngt.Offset(0, 1).Interior.ColorIndex = rngt
        End If
        
    Next rngt

End Sub


Sub colortext02()
    Dim rngD As Range
    Dim rngt As Range
    
    Set rngD = Range("rngHW") 'rngHW이라고 이름 정의한 영역을 rngD변수에 넣는다.
    rngD.ClearContents
    
    For Each rngt In rngD
        If rngt.Interior.ColorIndex > 0 Then
            rngt.Offset(0, 1) = rngt.Interior.ColorIndex
        End If
        
    Next rngt

End Sub

Sub colortext03()
    Dim rngD As Range
    Dim rngt As Range
    
    Set rngD = Range("rngImage")
    rngD.Interior.ColorIndex = 0 '영역을 초기화한다.
    
    For Each rngt In rngD
        If rngt = 1 Then
            rngt.Offset(0, 0).Interior.ColorIndex = 7
        End If
        
    Next rngt

End Sub

 

21. 색상표 만들기.xlsm
0.05MB

반응형

'VBA' 카테고리의 다른 글

엑사남 강의 23강 UserForm  (0) 2022.03.25
엑사남 강의 22강 InputBox  (0) 2022.03.24
엑사남 강의 18강 Union  (0) 2022.03.13
엑사남 17강 RemoveDuplicate, Array  (0) 2022.03.12
엑사남 강의 16강 정렬 sort  (0) 2022.03.10
반응형

엑사남 강의 18강 Union

 

 

Sub union_test01()

'남자인 행을 삭제하기

    Dim rngD As Range
    Dim lngE As Long
    Dim i As Long
    lngE = Range("F10000").End(xlUp).Row
    For i = 7 To lngE
        If Range("G" & i) = "남" Then
            If rngD Is Nothing Then
                Set rngD = Range("G" & i)
            Else
                Set rngD = Union(rngD, Range("G" & i))
            End If
        End If
    Next

    If rngD Is Nothing Then
        MsgBox "삭제할 범위가 없어요."
    Else
        rngD.EntireRow.Delete
    End If
End Sub


Sub union_test02()
'여자인 행을 복사하기
    Dim rngD As Range
    Dim lngE As Long
    Dim i As Long
    
    lngE = Range("F10000").End(xlUp).Row
    '추출된 내용이 있으면 초기화 한다.
    Range("O6").CurrentRegion.Offset(1, 0).Clear
    
    For i = 7 To lngE
        If Range("G" & i) = "여" Then
            If rngD Is Nothing Then
                Set rngD = Range("G" & i).Offset(0, -1).Resize(1, 7)
            Else
                Set rngD = Union(rngD, Range("G" & i).Offset(0, -1).Resize(1, 7))
            End If
        End If
    Next

    If rngD Is Nothing Then
        MsgBox "복사할 범위가 없어요."
    Else
        rngD.Copy Range("O7")
    End If
    
End Sub



Sub union_test03()
'여자이고 평균이 70이상인 것을 추출한다.
    Dim rngD As Range
    Dim lngE As Long
    Dim i As Long
    
    lngE = Range("F10000").End(xlUp).Row
    
    Range("O6").CurrentRegion.Offset(1, 0).Clear
    
    For i = 7 To lngE
        If Range("G" & i) = "여" And Range("G" & i).Offset(0, 5) >= 70 Then
            If rngD Is Nothing Then
                Set rngD = Range("G" & i).Offset(0, -1).Resize(1, 7)
            Else
                Set rngD = Union(rngD, Range("G" & i).Offset(0, -1).Resize(1, 7))
            End If
        End If
    Next

    If rngD Is Nothing Then
        MsgBox "복사할 범위가 없어요."
    Else
        rngD.Copy Range("O7")
    End If
    
End Sub

18. Union.xlsm
0.03MB

 

반응형

'VBA' 카테고리의 다른 글

엑사남 강의 22강 InputBox  (0) 2022.03.24
엑사남 강의 21강 색상표 만들기  (0) 2022.03.21
엑사남 17강 RemoveDuplicate, Array  (0) 2022.03.12
엑사남 강의 16강 정렬 sort  (0) 2022.03.10
VBA에서 만든 함수 #NAME? error  (0) 2022.03.09
반응형

엑사남 17강 RemoveDuplicate, Array

 

Sub test01()

    Dim rngD As Range
    Dim lngE As Long
    
    'lngE = Cells(Rows.Count, 6).End(xlUp).Row  : 시트의 맨마지막 행을 찾는 코드 
    'lngE = Cells(Rows.Count, "F").End(xlUp).Row  : 시트의 맨마지막 행을 찾는 코드
    lngE = Range("F1000").End(xlUp).Row
    
    Range("H:H").Clear
    Range("F6:F" & lngE).Copy Range("H6")
    
    Set rngD = Range("H7:H" & lngE)
    rngD.RemoveDuplicates Columns:=1, Header:=xlNo
    
    'xlAscending : 오름차순
    'xlDescending: 내림차순
    '더이상 정렬한 조건이 없으면 Header:를 입력한다.
    '이때 xlGuess :헤더 설정을 엑셀 마음대로,
    'xlYes : 데이터의 첫번째 행을 제목으로 사용,
    'xlNO: 데이터의 첫번째 행을 제목으로 사용안함.
    
    rngD.Sort key1:=Range("H7"), order1:=xlAscending, Header:=xlNo
End Sub

'+++++++++++++++++++++++++++++++++++++++++++++++++

 

 

Sub test02()
    Dim rngD As Range
    Dim lngE As Long
    
    'lngE = Cells(Rows.Count, 6).End(xlUp).Row
    'lngE = Cells(Rows.Count, "F").End(xlUp).Row
    lngE = Range("F1000").End(xlUp).Row
    
    Range("i:j").Clear
    Range("F6:G" & lngE).Copy Range("I6")
    
    Set rngD = Range("I7:J" & lngE)
    rngD.RemoveDuplicates Columns:=Array(1, 2), Header:=xlNo

    rngD.Sort key1:=Range("I7"), order1:=xlAscending, _
              key2:=Range("J7"), order2:=xlAscending, Header:=xlNo
End Sub
'+++++++++++++++++++++++++++++++++++++++++++++++++

 

Sub test03()
    Dim rngD As Range
    Dim lngE As Long
    
    'lngE = Cells(Rows.Count, 6).End(xlUp).Row
    'lngE = Cells(Rows.Count, "F").End(xlUp).Row
    lngE = Range("F1000").End(xlUp).Row
    
    Range("J:L").Clear
    Range("F6:H" & lngE).Copy Range("J6")
    
    Set rngD = Range("J7:L" & lngE)
    rngD.RemoveDuplicates Columns:=Array(1, 2, 3), Header:=xlNo

    rngD.Sort key1:=Range("J7"), order1:=xlAscending, _
              key2:=Range("K7"), order2:=xlAscending, _
              key3:=Range("L7"), order3:=xlAscending, Header:=xlNo

End Sub

 

17. RemoveDuplicates, Array.xlsm
0.03MB

 

 

반응형

'VBA' 카테고리의 다른 글

엑사남 강의 21강 색상표 만들기  (0) 2022.03.21
엑사남 강의 18강 Union  (0) 2022.03.13
엑사남 강의 16강 정렬 sort  (0) 2022.03.10
VBA에서 만든 함수 #NAME? error  (0) 2022.03.09
미분계산 VBA  (0) 2022.03.08
반응형

엑사남 강의 16강 정렬 sort

 

16. sort.xlsm
0.02MB

 

 

Sub sort_test()
    Dim rngD As Range
    
    Set rngD = Range("L12:S" & Range("B2"))
    'xlAscending : 오름차순
    'xlDescending: 내림차순
    '더이상 정렬한 조건이 없으면 Header:를 입력한다.
    '이때 xlGuess :헤더 설정을 엑셀 마음대로,
    'xlYes : 데이터의 첫번째 행을 제목으로 사용,
    'xlNO: 데이터의 첫번째 행을 제목으로 사용안함.
    rngD.Sort key1:=Range("M12"), order1:=xlAscending, _
              key2:=Range("N12"), order2:=xlAscending, _
              key3:=Range("S12"), order3:=xlAscending, Header:=xlYes
    '자동구문이 안 나올때 ctrl+space
    
End Sub

반응형

'VBA' 카테고리의 다른 글

엑사남 강의 18강 Union  (0) 2022.03.13
엑사남 17강 RemoveDuplicate, Array  (0) 2022.03.12
VBA에서 만든 함수 #NAME? error  (0) 2022.03.09
미분계산 VBA  (0) 2022.03.08
엑사남 강의 14강 BeforeRightClick event  (0) 2022.03.06
반응형

VBA에서 만든 함수 #NAME? error

 

현재 사용하고 있는 엑셀의 매크로 설정은

모든 매크로 포함(위험성 있는 코드가 실행될 수 있으므로 권장하지 않음(E)

CurvArea라는 모듈을 추가 했고

함수명을 CurvArea로 정의하여 Simpson의 사다리꼴 면적 계산하는 것을 만들었다.

 

D4셀에 =curvarea(A4:A39,B4:B39) 입력

#NAME?

이게 무슨일인가?

 

보통 엑셀에서 #NAME? 에러는 함수명을 잘못썼을때 나오는 에러인데

함수명은 똑바로 입력했는데 #NAME?에러가 나왔다?

이건 무슨 의미일까?

 

똑같은 코딩을 다른 파일에 옮겨서 해보니

잘된다.

 

어떤 차이일까?

이때는 모듈이름과 함수 이름이 다르다.

 

그래서 모듈이름과 함수이름을 다르게 해보자.

모듈이름 : Cruv_Area

함수이름 : CurvArea

 

 

문제 해결

반응형

'VBA' 카테고리의 다른 글

엑사남 17강 RemoveDuplicate, Array  (0) 2022.03.12
엑사남 강의 16강 정렬 sort  (0) 2022.03.10
미분계산 VBA  (0) 2022.03.08
엑사남 강의 14강 BeforeRightClick event  (0) 2022.03.06
엑사남_13강 DoubleClick 이벤트  (0) 2022.03.05

+ Recent posts