programing

Excel VB에서 현재 셀 가져오기

css3 2023. 4. 15. 09:13

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