반응형

아래코드에서 형광색으로 칠해 놓은 부분이 이해가 되지 않아 네이버 지식인에 문의를 했더니

아주 좋은 답변을 얻게 되었다.

 

Function Tritype(a, b, c)
    'Sort the three sides in ascending order
    If b > a Then holder = a: a = b: b = holder
    If c > a Then holder = a: a = c: c = holder
    If c > b Then holder = b: b = c: c = holder
    'Determin triangle type
    If a > b + c Then
                    Tritype = "None"
        ElseIf a * a = b * b + c * c Then
                    Tritype = "Right"
        ElseIf (a = b) And (b = c) Then
                    Tritype = "Equilateral"
        ElseIf (a = b) Or (b = c) Then
                    Tritype = "Isosceles"
        Else
                    Tritype = "Scalene"
    End If
End Function

 

:는 줄넘김을 하지 않고 코딩할때 사용한다.

If b > a Then holder = a: a = b: b = holder 는

 

아래와 같은 코드이다.

If b > a Then 

  holder = a

  a = b

  b = holder

 

 

따라서 아래 코드는

If b > a Then holder = a: a = b: b = holder
if c > a Then holder = a: a = c: c = holder
If c > b Then holder = b: b = c: c = holder

 

a값, b값, c값 중에서..

제일 큰값은 a에 저장..

다음 큰값은 b에 저장..

제일 작은 값은 c에 저장..

 

https://kin.naver.com/qna/detail.naver?d1id=1&dirId=102020101&docId=417594885&scrollTo=answer1 

 

엑셀VBA if함수 질문

요즘 공부하고 있는 책에 있는 내용입니다. 아래 형광색으로 칠해 놓은 부분이 이해가 되지 않습니다.If b > a Then holder = a: a = b: b = holde...

kin.naver.com

 

반응형

'VBA' 카테고리의 다른 글

셀 값에서 숫자만 없애는 방법  (0) 2022.04.24
Maclaurin series를 이용한 Exp(x) 함수 계산  (0) 2022.04.20
Functions Visual Basic for Applications  (0) 2022.04.13
목표값찾기 단축 매크로  (0) 2022.03.29
Worksheets  (0) 2022.03.28
반응형

Functions Visual Basic for Applications

 

Abs(x) 

The absolute value of x

 

Atn(x)

Inverse tangent of x. Other inverse functions may be computed using trigonometric identities such as Arcsin(X) = Atn(X / Sqr(-X*X + 1)). For more information, search Visual Basic Help for derived math functions

 

Cos(x) 

The cosine of x, where x is expressed in radians

 

Exp(x)

The value e^x

 

Fix(x) 

Returns the integer portion of x. If x is negative, Fix returns the first negative integer greater than or equal to x; for
example, Fix(-7.3) returns -7. See also Int

 

Int(x) 

Returns the integer portion of x. If x is negative, Int returns the first negative integer less than or equal to x; for
example, Int(-7.3) returns -8. See also Fix

 

Log(x) 

The value of the natural logarithm of x. Note how this differs from the worksheet function with the same name that, without a second argument, returns the logarithm to base 10. In VBA, the logarithm of x to base n may be
found using the statement y = Log(x)/Log(n)

 

Mod

In Visual Basic, this is an operator, not a function, but it is similar to the worksheet MOD function. It is used in the
form number Mod divisor and returns the remainder of number divided by divisor after rounding floating-point
values to integers. The worksheet function and the VBA operator return different values when the number and
divisor have opposite signs; see Help for details

 

Rnd(x) 

Returns a random number between 0 and 1

 

Sgn(x) 

Returns -1, 0, or 1 depending on whether x has a negative, zero, or positive value

 

Sin(x) 

The sine of x, where x is expressed in radians

 

Sqr(x) 

Square root of x

 

Tan(x) 

The tangent of x

반응형

'VBA' 카테고리의 다른 글

Maclaurin series를 이용한 Exp(x) 함수 계산  (0) 2022.04.20
VBA에서 ":"의 사용법  (0) 2022.04.19
목표값찾기 단축 매크로  (0) 2022.03.29
Worksheets  (0) 2022.03.28
주석 블록 설정 및 해제 단축키  (0) 2022.03.27
반응형


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

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

+ Recent posts