Excel VB에서 현재 셀 가져오기
엑셀/VB에 작업하려고 하는 작은 스크립트가 있습니다.복사할 동적 데이터 범위를 선택할 뿐이지만 그리드 데이터(A11 등)를 가져오는 방법에 대한 도움말/코드를 찾을 수 없습니다.
다음은 데이터 범위를 선택하는 매크로 기록의 코드입니다.
Range("D291:D380").Select
그냥 할 수 있으면 좋겠는데Range(Current).Select
안 먹히는 것 같아요.
VBA를 사용하여 현재 셀을 얻으려면 어떻게 해야 합니까?
시도해 보셨습니까?
1 셀의 경우:
ActiveCell.Select
선택한 셀이 여러 개인 경우:
Selection.Range
예를 들어 다음과 같습니다.
Dim rng As Range
Set rng = Range(Selection.Address)
이 방법은 질문에 직접 답변하는 데 도움이 되지 않을 수 있지만, 동적 범위로 작업할 때 도움이 될 수 있습니다.
워크시트의 셀 A1에 100 ~ 108의 숫자가 있다고 가정합니다.C3:
A B C
1 100 101 102
2 103 104 105
3 106 107 108
그런 다음 사용할 수 있는 모든 셀을 선택하려면CurrentRegion
속성:
Sub SelectRange()
Dim dynamicRange As Range
Set dynamicRange = Range("A1").CurrentRegion
End Sub
이 방법의 장점은 숫자 블록에 새 행 또는 열을 추가하면(예: 109, 110, 111) CurrentRegion이 항상 확대된 범위(이 경우 A1:C4)를 참조한다는 것입니다.
VBA 코드에서 CurrentRegion을 꽤 많이 사용했는데, dynmacial size range를 사용할 때 가장 유용하다는 것을 알게 되었습니다.또, 코드의 하드 코드 범위를 피할 수 있습니다.
마지막으로, 제 코드에서 A1을 CurrentRegion의 레퍼런스 셀로 사용한 것을 알 수 있습니다.또, 어느 셀을 참조해도 동작합니다(예를 들면, A1을 B2로 치환합니다).그 이유는 CurrentRegion이 참조 셀을 기반으로 모든 연속 셀을 선택하기 때문입니다.
키워드 "Selection"은 이미 vba Range 개체이므로 직접 사용할 수 있으며 복사할 셀을 선택할 필요가 없습니다. 예를 들어 Sheet1에서 다음 명령을 실행할 수 있습니다.
ThisWorkbook.worksheets("sheet2").Range("namedRange_or_address").Copy
ThisWorkbook.worksheets("sheet1").Range("namedRange_or_address").Paste
여러 개를 선택할 경우 for 루프의 Area 개체를 사용해야 합니다.
Dim a as Range
For Each a in ActiveSheet.Selection.Areas
a.Copy
ThisWorkbook.worksheets("sheet2").Range("A1").Paste
Next
안부 전해요
토마스.
동적으로 생성된 문자열을 사용하여 범위를 파악하려면 다음과 같이 문자열을 작성해야 합니다.
Range(firstcol & firstrow & ":" & secondcol & secondrow).Select
질문의 제목에서 직접 적용되는 것은 아닙니다만, 특히 사용자가 선택한 범위에 관심이 있는 경우, 코드가 실행될 때마다 범위를 선택하는 것이 변수 범위에 대한 몇 가지 방법입니다.이 옵션에 관심이 있는 경우 응용 프로그램을 사용할 수 있습니다.Input Box(여기 공식 문서 페이지).옵션 변수 중 하나는 'type'입니다.유형이 8로 설정된 경우 InputBox에는 Excel 스타일의 범위 선택 옵션도 있습니다.코드에서의 사용 방법의 예는 다음과 같습니다.
Dim rng as Range
Set rng = Application.InputBox(Prompt:= "Please select a range", Type:=8)
주의:
변수에 (InputBox " " " " " " " " " " " " " " " " " ( None-Range " " " " " " " the the the the the the the the the the the the ) 。Set
키워드) 대신 다음 코드와 같이 범위 값이 할당됩니다(단, 이 상황에서 여러 범위를 선택하면 값을 배리언트에 할당해야 할 수 있습니다).
Dim str as String
str = Application.InputBox(Prompt:= "Please select a range", Type:=8)
이거 드셔보세요
Dim app As Excel.Application = Nothing
Dim Active_Cell As Excel.Range = Nothing
Try
app = CType(Marshal.GetActiveObject("Excel.Application"), Excel.Application)
Active_Cell = app.ActiveCell
Catch ex As Exception
MsgBox(ex.Message)
Exit Sub
End Try
' .address will return the cell reference :)
언급URL : https://stackoverflow.com/questions/2202093/get-the-current-cell-in-excel-vb
'programing' 카테고리의 다른 글
트리거에서 다른 컨트롤의 속성에 바인딩하려면 어떻게 해야 합니까? (0) | 2023.04.15 |
---|---|
Excel vba를 사용하여 여러 기준 필터링 (0) | 2023.04.15 |
브라우저에서 응용 프로그램을 실행하는 방법 (0) | 2023.04.15 |
셸 스크립트의 설계 패턴 또는 베스트 프랙티스 (0) | 2023.04.15 |
WPF 사용자 컨트롤을 창까지 넓히려면 어떻게 해야 합니까? (0) | 2023.04.15 |