반응형

엑사남 강의 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
반응형

Excel for scientists and engineer - numerical method by E. Joseph Billo

의 미분방정식의 풀이 입니다.

 

first derivative function
first derivative function

Option Explicit
Function FirstDerivDemo(expression, variable) As Double
'Custom function to return the first derivative of a formula in a cell

Dim OldX As Double, OldY As Double, NewX As Double, NewY As Double
Dim Formulastring As String, XAddress As String

Formulastring = expression.Formula
OldY = expression.Value
XAddress = variable.Address 'Default is absolute reference
OldX = variable.Value
NewX = OldX * 1.00000001
Formulastring = Application.ConvertFormula(Formulastring, xlA1, xlA1, xlAbsolute) 'Convert all references in formula to absolute
Formulastring = Application.Substitute(Formulastring, XAddress, NewX)
NewY = Evaluate(Formulastring)
FirstDerivDemo = (NewY - OldY) / (NewX - OldX)
End Function

 

 

반응형
반응형

엑사남 강의 14강 BeforeRightClick event

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

'If ActiveSheet.ChartObjects.Count > 0 Then
'    ActiveSheet.ChartObjects.Delete
'End If

    If Target.Count > 1 Then '선택, 타겟한 셀의 개수가 1개 이상이라면'
        
        If Target.Cells(1, 1) <> "" Then '선택, 타겟한 셀들 중 첫행 & 첫열의 셀이 공백이 아니라면'
            
            Call chart01 'chart01함수를 실행해라. 호출구문'
            Cancel = True  '우클릭으로 샐행되는 기존의 기능(팝업생성)을 취소할거니? = 예'
            
        Else
            With ActiveSheet.ChartObjects 'ActiveSheet.ChartObjects 묶음
           If .Count > 0 Then
             .Delete
            End If
            End With
        End If
    
    
    End If

End Sub

14. BeforeRightClick Event.xlsm
0.02MB

https://www.youtube.com/watch?v=77w2--MBQPc&list=PLX_j6S8lDkZ_Wr0S9fGLX6utD_Uznj6Dg&index=14 

 

반응형

'VBA' 카테고리의 다른 글

VBA에서 만든 함수 #NAME? error  (0) 2022.03.09
미분계산 VBA  (0) 2022.03.08
엑사남_13강 DoubleClick 이벤트  (0) 2022.03.05
범위를 변수로 지정하는 방법  (0) 2022.03.01
With문  (0) 2022.02.24
반응형

 

 

13.DoubleClick_event.xlsm
0.01MB

 

 

반응형

'VBA' 카테고리의 다른 글

미분계산 VBA  (0) 2022.03.08
엑사남 강의 14강 BeforeRightClick event  (0) 2022.03.06
범위를 변수로 지정하는 방법  (0) 2022.03.01
With문  (0) 2022.02.24
UserForm  (0) 2022.02.23
반응형

일반적으로 변수를 지정하려면

변수의 형식을 지정하고 변수를 정의합니다.

 

dim strS as String

strS = Target

 

범위를 지정하려면 마찬가지로 변수의 형식을 지정하고 변수를 정의한다.

dim rngR as Range

rngR = range("F7:L26")

 

위와 같이 지정하면 안되고 다음과 같이 정의해야 한다.

어떠한 객체의 변수 선언은 Set 구문을 사용한다.

 

Set rngR = range("F7:L26")

 

 

반응형

'VBA' 카테고리의 다른 글

엑사남 강의 14강 BeforeRightClick event  (0) 2022.03.06
엑사남_13강 DoubleClick 이벤트  (0) 2022.03.05
With문  (0) 2022.02.24
UserForm  (0) 2022.02.23
Open Close evnet 만들기  (0) 2022.02.23
반응형

With문은 같은 내용을 하나로 묶는 기증이다.

 

Width ~ End Width 

 

아래 코드에서 .Colorindex 앞에는 Target.Interior이 생략된 것이라고 보면 된다.

  

   With Target.Interior
        If .ColorIndex = 3 Then
            .ColorIndex = 0
        Else
            .ColorIndex = 3
        End If
    End With

 

 

 

 

반응형

'VBA' 카테고리의 다른 글

엑사남_13강 DoubleClick 이벤트  (0) 2022.03.05
범위를 변수로 지정하는 방법  (0) 2022.03.01
UserForm  (0) 2022.02.23
Open Close evnet 만들기  (0) 2022.02.23
Clear, ClearContents, Delete  (0) 2022.02.22
반응형

UserForm

 

ID와 PASSWORD를 입력하면 파일을 열고

아니면 종료하는 코드

 

 

Private Sub CommandButton1_Click()
    'Sheet3 B2셀에 textbox1에 입력된 내용을 입력하라.

    'Sheet3 B3셀에 textbox2에 입력된 내용을 입력하라.
    Sheet3.Range("B2:B3").ClearContents
    Sheet3.Range("B2") = Me.TextBox1.Value
    Sheet3.Range("B3") = Me.TextBox2.Value
    If Sheet3.Range("B4") = True Then
        MsgBox "어서오세요"
        Unload UserForm1
    Else
        MsgBox "ID와 PASSWORD를 확인하세요"
        ActiveWorkbook.Close False
    End If
End Sub

 

 

userform1.xlsm
0.02MB

 

이 내용을 유튜브 엑셀을 사랑하는 남자 강의 내용을 따라 해본 것입니다.

 

반응형

'VBA' 카테고리의 다른 글

범위를 변수로 지정하는 방법  (0) 2022.03.01
With문  (0) 2022.02.24
Open Close evnet 만들기  (0) 2022.02.23
Clear, ClearContents, Delete  (0) 2022.02.22
MsgBox, InputBox  (0) 2022.02.21
반응형

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If MsgBox("정말 닫으시겠습니까?", vbYesNo) = vbNo Then
        MsgBox "닫기를 취소합니다."
        Cancel = True
    End If
End Sub

 


Private Sub Workbook_Open()
    MsgBox "안녕하세요. 반갑습니다."
End Sub

반응형

'VBA' 카테고리의 다른 글

With문  (0) 2022.02.24
UserForm  (0) 2022.02.23
Clear, ClearContents, Delete  (0) 2022.02.22
MsgBox, InputBox  (0) 2022.02.21
전체복사, 값만복사, 수식만복사, 서식만복사  (0) 2022.02.21
반응형

Sub clearall()
    Range("F7:L29").Clear
End Sub


Sub clearvalue()
    Range("F7:L29").ClearContents

End Sub


Sub deleterow()
    Range("7:26").Delete
End Sub


'clear은 행과 열을 그래로 두고 내용을 지우는 것이고
'delete는 행과 열을 지운다.

Sub clearformats()
    Range("F7:L29").clearformats
End Sub


'for문은 이용해서 한 행씩 지울때는 맨 아래부터 지워야 한다.
Sub test01()
    Dim i As Long
    
    For i = 26 To 7 Step -1
        If Cells(i, "G") = "남" Then
'셀.entireRow : 셀의 전체행
'셀.entireColumn : 셀의 전체 열
            'Cells(i, "G").EntireRow.Delete
            Rows(i).Delete
        End If
    
    Next i
End Sub

Sub hw()
    Dim lngR As Long
     lngR = Range("F10000").End(xlUp).Row
    For i = lngR To 7 Step -1
        If Cells(i, "G") = "남" Or Cells(i, "L") <= 70 Then
            Cells(i, "G").EntireRow.Delete
        End If
        
    Next i
End Sub

 

 

각각의 차이점

Range("A1").Clear             :셀은 그대로 두고 전체 지우기

Range("A1").ClearContents :셀은 그대로 두고 내용만 지우기

Range("A1").ClearFormats  :셀은 그대로 두고 서식만 지우기

Range("A1").ClearComments :셀은 그대로 두고 메모만 지우기

 

반응형

'VBA' 카테고리의 다른 글

UserForm  (0) 2022.02.23
Open Close evnet 만들기  (0) 2022.02.23
MsgBox, InputBox  (0) 2022.02.21
전체복사, 값만복사, 수식만복사, 서식만복사  (0) 2022.02.21
A1, R1C1 , R[1]C[1] style 차이점  (0) 2022.02.21

+ Recent posts