반응형

Anno Domini

라틴어로 주님의 해

반응형
반응형

확장 영역 자동 선택

 

Sub ExpandRange()
    Dim Rng As Range
    Dim StartCell As Range
    Dim LastRow As Long
    Dim LastCol As Long

    ' 초기 시작 셀 설정 (예: A1)
    Set StartCell = Range("A1")

    ' 마지막 행과 마지막 열 찾기
    LastRow = StartCell.Worksheet.Cells(StartCell.Worksheet.Rows.Count, StartCell.Column).End(xlUp).Row
    LastCol = StartCell.Worksheet.Cells(StartCell.Row, StartCell.Worksheet.Columns.Count).End(xlToLeft).Column

    ' 동적 범위 정의
    Set Rng = StartCell.Worksheet.Range(StartCell, StartCell.Worksheet.Cells(LastRow, LastCol))

    ' 결과 출력
    MsgBox "새로 정의된 범위: " & Rng.Address, vbInformation, "확장된 영역"
End Sub

 

 

코드 설명

  1. 시작 셀 지정
    • Set StartCell = Range("A1")를 통해 데이터가 시작되는 첫 번째 셀을 지정합니다.
  2. 마지막 행과 열 찾기
    • LastRow: 시작 열에서 데이터가 있는 마지막 행을 찾습니다.
    • LastCol: 시작 행에서 데이터가 있는 마지막 열을 찾습니다.
  3. 동적 범위 정의
    • Range(StartCell, Cells(LastRow, LastCol))를 사용하여 새로 확장된 영역을 동적으로 설정합니다.
  4. 결과 확인
    • 확장된 범위를 메시지 박스로 출력하여 확인할 수 있습니다.

 

데이터 추가 후 자동 실행 (워크시트 변경 이벤트 활용)

데이터가 추가될 때마다 자동으로 영역이 확장되도록 하려면 워크시트 변경 이벤트를 활용할 수 있습니다.

이벤트 코드: 워크시트 변경 감지

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim StartCell As Range
    Dim LastRow As Long
    Dim LastCol As Long
    Dim Rng As Range

    ' 초기 시작 셀 설정 (예: A1)
    Set StartCell = Me.Range("A1")

    ' 마지막 행과 열 찾기
    LastRow = Me.Cells(Me.Rows.Count, StartCell.Column).End(xlUp).Row
    LastCol = Me.Cells(StartCell.Row, Me.Columns.Count).End(xlToLeft).Column

    ' 동적 범위 정의
    Set Rng = Me.Range(StartCell, Me.Cells(LastRow, LastCol))

    ' 확장된 범위를 표시 (선택적)
    Debug.Print "확장된 영역: " & Rng.Address
End Sub

 

사용 방법

  1. 해당 코드를 변경하려는 워크시트의 코드 창에 추가합니다.
    • VBA 편집기에서 해당 워크시트를 선택 후 추가.
  2. 데이터를 추가하거나 변경하면 자동으로 동작합니다.

 

결과

  • 원래 데이터: $A$1:$B$10
  • 새 데이터 추가: A11 또는 B11에 데이터를 추가하면 자동으로 $A$1:$B$11로 범위가 확장됩니다.
  • 확인 방법: Rng 변수에 새롭게 확장된 영역이 저장됩니다.

위 코드는 엑셀에서 데이터를 동적으로 관리할 때 유용합니다.

반응형
반응형

[직장인 필수] 엑셀 VBA 자동화, 이 영상으로 마스터하세요! | 초보자 맞춤, 4시간 완성 코스

 

https://youtu.be/NAJpBaUU_9M?si=oPJSNvPTyUxzmWpR

 

반응형

'VBA' 카테고리의 다른 글

VBA Tips  (0) 2024.12.17
확장 영역 자동 선택  (0) 2024.11.28
ReDim의 주요 목적  (0) 2024.11.11
V=range("NFE")와 V=range("NFE").Value의 차이점  (0) 2024.11.10
VBA 코드에서 언더스코어(_)의 기능  (0) 2024.11.09
반응형

1. ReasearchRabbit
논문 관련 문헌 검색

 

https://www.youtube.com/watch?v=phWqcGcxeE4

 

 

https://www.jcu.edu.au/__data/assets/pdf_file/0008/1958831/Research-Rabbit-Overview.pdf

2. PopAi


논문 요약

3. Napkin.Ai

발표자료 시각화

https://youtu.be/G1n_MJUsG28?si=cBwAJ05qkD-4Z4Wk

 

반응형

'알면 힘이되는 것' 카테고리의 다른 글

PDF파일 종이 크기에 맞게 인쇄  (0) 2025.03.04
태양 적위 계산  (0) 2025.01.15
멀티스카프 쓰는 방법  (0) 2024.06.27
Perplexity  (0) 2024.06.26
Windows11 바탕화면 바로가기  (0) 2024.06.19
반응형

am은 "ante meridiem"을, 즉 "오전"을 나타내고, pm은 "post meridiem"을, 즉 "오후"를 나타냅니다.

반응형
반응형

토토리
acorn

반응형
반응형

ReDim은 VBA에서 동적 배열의 크기를 변경할 때 사용되는 키워드입니다. Dim을 사용해 배열을 선언할 때 크기를 미리 지정하지 않고, 코드 실행 중 필요한 크기로 배열을 조정할 수 있습니다.

ReDim의 주요 목적

  1. 동적 배열 크기 조정: 초기에는 크기를 알 수 없는 배열의 요소 개수를 ReDim을 사용해 설정할 수 있습니다.
  2. 메모리 효율성: 필요한 크기만큼만 배열을 설정하고, 데이터 추가나 변경에 따라 배열 크기를 조정함으로써 메모리를 효율적으로 사용할 수 있습니다.
  3. 실행 중 배열 크기 변경: 배열 크기를 코드 실행 도중 변경해야 할 때 유용합니다.

사용 예시

다음은 동적 배열을 ReDim으로 설정하고 변경하는 예입니다.

Sub Example()
    Dim myArray() As Integer ' 크기를 지정하지 않은 배열 선언
    
    ' 배열의 크기 설정 (초기 크기: 5)
    ReDim myArray(1 To 5)
    myArray(1) = 10

    ' 배열 크기 재설정 (변경된 크기: 10)
    ReDim myArray(1 To 10)
End Sub

 

 

ReDim Preserve의 사용

기존 데이터가 있는 배열 크기를 변경하면서 데이터를 유지하려면 ReDim Preserve를 사용해야 합니다. Preserve를 붙이지 않으면 배열의 모든 요소가 초기화됩니다.

Sub ExampleWithPreserve()
    Dim myArray() As Integer
    ReDim myArray(1 To 5)
    myArray(1) = 10
    
    ' 배열 크기 변경, 기존 데이터 유지
    ReDim Preserve myArray(1 To 10)
End Sub

 

 

주의사항

  • ReDim Preserve는 배열의 마지막 차원만 변경할 수 있습니다.
반응형
반응형

V = Range("NFE")와 V = Range("NFE").Value는 엑셀 VBA에서 셀 값을 변수에 저장할 때 약간의 차이가 있습니다.

차이점

  1. V = Range("NFE"):
    • 이 코드는 Range("NFE") 객체 자체를 V에 할당하는 것입니다.
    • V는 이제 Range 객체의 참조를 가지며, V를 통해 Range 객체의 다양한 속성(Value, Formula, Address 등)에 접근할 수 있습니다.
    • 즉, V.Value, V.Formula 등을 통해 해당 셀의 값이나 수식을 직접 확인하고 조작할 수 있습니다.
    Dim V As Range
    Set V = Range("NFE") ' Range 객체를 참조
    MsgBox V.Value       ' V를 통해 해당 셀의 값에 접근
     
     
     
  2. V = Range("NFE").Value:
    • 이 코드는 Range("NFE")의 값만을 V에 할당하는 것입니다.
    • V는 셀의 Value 속성에 할당된 데이터만 저장하므로, V는 이제 셀의 값만을 가지는 변수로, 셀의 다른 속성이나 메서드에는 접근할 수 없습니다.
     
Dim V As Variant
V = Range("NFE").Value ' NFE 셀의 값만 가져옴
MsgBox V               ' 셀의 값 표시

 

요약

  • Range("NFE"): 셀 자체(Range 객체)를 참조로 할당. 셀의 다양한 속성에 접근 가능.
  • Range("NFE").Value: 셀의 값만 할당. 값만을 읽거나 사용하려고 할 때 적합.

따라서, 단순히 셀의 값을 가져오려는 경우 V = Range("NFE").Value를 사용하는 것이 적합하며, 셀의 다른 속성이나 셀의 범위를 직접 제어하려면 V = Range("NFE")와 같이 Range 객체 참조를 사용하는 것이 좋습니다.

반응형
반응형

VBA 코드에서 **언더스코어(_)**는 줄 바꿈 문자로 사용됩니다. VBA에서는 한 줄에 모든 코드를 작성해야 하는 제한이 있기 때문에, 코드가 길어질 경우 언더스코어를 사용해 다음 줄로 이어서 작성할 수 있습니다. 이를 통해 코드의 가독성을 높일 수 있습니다.

사용 방법

언더스코어를 줄의 끝에 넣고 다음 줄에서 코드를 계속 작성하면 됩니다. 이때, 언더스코어 앞뒤에는 반드시 공백이 있어야 합니다.

Sub Example()
    Dim total As Integer
    total = 10 + 20 + 30 + _
            40 + 50 + 60 ' 언더스코어로 줄 바꿈
    MsgBox total
End Sub

주의 사항

  • 언더스코어 뒤에는 아무 내용도 없어야 합니다. 이어지는 줄은 다음 코드의 일부로 인식됩니다.
  • 문장 하나를 여러 줄에 걸쳐 작성하는 데 유용하며, 함수나 서브루틴 선언, If 문, For 문 등에서도 사용할 수 있습니다.

예시

긴 조건문을 언더스코어를 사용해 여러 줄로 나눌 수도 있습니다.

 
If total > 0 And total < 100 And _
   total Mod 10 = 0 Then
    MsgBox "조건이 만족되었습니다."
End If

 

반응형

'VBA' 카테고리의 다른 글

ReDim의 주요 목적  (0) 2024.11.11
V=range("NFE")와 V=range("NFE").Value의 차이점  (0) 2024.11.10
변수명 A와 A()의 차이  (0) 2024.11.08
Option Explicit 사용하는 이유는?  (0) 2024.11.07
변수명 끝에 &와 #  (0) 2024.10.23
반응형

VBA에서 변수명을 A로 선언하는 것과 A()로 선언하는 것에는 중요한 차이가 있습니다.

  • A : 일반 변수입니다. A는 단일 값(스칼라)을 저장하는 변수로, 숫자나 문자열과 같은 단일 데이터를 저장할 수 있습니다.
Dim A As Integer
A = 10 ' 단일 정수 값을 저장

 

  • A() : 배열입니다. A()는 여러 개의 값을 저장할 수 있는 배열 변수로, 특정 인덱스를 통해 각 요소에 접근할 수 있습니다. 배열은 한 번에 여러 값을 저장할 때 유용합니다.
Dim A(1 To 5) As Integer ' 5개의 정수를 저장할 수 있는 배열
A(1) = 10 ' 첫 번째 요소에 값 할당
A(2) = 20 ' 두 번째 요소에 값 할당

 

주요 차이점

  1. 데이터 저장 방식: A는 단일 값을 저장하지만, A()는 여러 값을 인덱스를 통해 저장할 수 있습니다.
  2. 용도: A는 단일 데이터를 저장하는 용도이고, A()는 여러 개의 관련된 데이터를 저장하는 용도입니다.
  3. 메모리 할당: A()와 같은 배열은 저장할 데이터 크기를 미리 정의하거나 동적으로 할당해야 하며, 메모리 관리가 필요할 수 있습니다.

 

동적 배열의 경우

배열의 크기를 코드 실행 중에 변경하고 싶다면, 동적 배열을 사용할 수 있습니다. 다음과 같이 ReDim을 사용하여 배열의 크기를 지정할 수 있습니다.

Dim A() As Integer
ReDim A(1 To 5) ' 배열의 크기 설정

 

따라서, A와 A()는 사용 목적과 저장 방식에서 큰 차이가 있습니다. A()는 특히 다수의 데이터를 효율적으로 관리할 때 유용합니다.

반응형

'VBA' 카테고리의 다른 글

V=range("NFE")와 V=range("NFE").Value의 차이점  (0) 2024.11.10
VBA 코드에서 언더스코어(_)의 기능  (0) 2024.11.09
Option Explicit 사용하는 이유는?  (0) 2024.11.07
변수명 끝에 &와 #  (0) 2024.10.23
Mohr's circle VBA code  (0) 2023.06.16

+ Recent posts