Excel VBA에서 사용자에게 범위 선택 도구/유틸리티 제공
Excel 2007 VBA에서 사용자 양식을 개발하려고 하며 사용자에게 다음과 같은 범위 선택 아이콘을 제공하려고 합니다.
하지만, 저는 이것을 제공하거나 적어도 아이디어를 제공하는 내장 폼 디자인 도구나 온라인 도구를 찾을 수 없었습니다.이에 대해 아시는 분이 계시다면 도움을 주시면 감사하겠습니다.
이 컨트롤을 RefEdit 컨트롤이라고 합니다.
이를 사용하려면 먼저 도구 상자 창에서 마우스 오른쪽 단추를 클릭하고 추가 컨트롤...을 선택하여 도구 상자 창에 추가해야 합니다.그런 다음 RefEdit을 선택합니다.Ctrl 키를 누른 후 대화 상자를 닫습니다.
이제 도구 상자에서 선택하여 양식에 배치할 수 있습니다.
RefEdit 사용에 대한 또 다른 대안.Ctrl은 TextBox 컨트롤의 일부 문서화되지 않은 기능에 연결하여 응용 프로그램을 사용하는 것입니다.InputBox 기능.
TextBox 컨트롤에는 오른쪽에 단추를 추가할 수 있는 속성 대화 상자에 나타나지 않는 두 가지 속성이 있습니다.DropButtonStyle과 ShowDropButtonWhen입니다.버튼을 클릭하면 입력 상자를 표시할 수 있는 컨트롤에 대한 DropButtonClick 이벤트가 실행됩니다.
양식에 TextBox 컨트롤을 배치하는 것으로 시작합니다.그런 다음 사용자 양식에 다음을 추가합니다.초기화 절차:
Private Sub UserForm_Initialize()
txtRefersTo.DropButtonStyle = frmDropButtonStyleReduce
txtRefersTo.ShowDropButtonWhen = frmShowDropButtonWhenAlways
End Sub
그런 다음 DropButtonClick 이벤트에 다음과 같이 이벤트 핸들러를 추가하여 응용 프로그램을 사용하여 범위를 캡처합니다.입력 상자 대화 상자:
Private Sub txtRefersTo_DropButtonClick()
Me.Hide
txtRefersTo.Text = Application.InputBox("Select the range", "Range Picker", txtRefersTo.Text, Type:=8)
Me.Show vbModal
End Sub
이 접근 방식의 주요 이점은 RefEdit와 관련된 문제를 겪지 않고 프레임 내 또는 별도의 탭에 컨트롤을 배치할 수 있다는 것입니다.Ctrl. Excel과 상호작용하기 위해서는 별도의 대화창이 필요하다는 단점이 있습니다.
이 질문은 이미 10년이 다 되어가지만, 여전히 저의 첫 구글 검색 결과로 나왔기 때문에 저는 고려해야 할 또 다른 접근법으로 답변을 올리려고 합니다.셀 참조로 설정된 유형의 입력 상자는 많은 사용자의 요구에 충분할 수 있습니다.입력 상자 유형은 사용자의 응답을 확인하는 드러지 작업을 수행합니다.InputBox 유형의 사용 방법은 다음 문서를 참조하십시오. https://www.thespreadsheetguru.com/blog/vba-to-select-range-with-inputbox
저는 @krey answer를 좋아했습니다. @krey answer --> https://www.thespreadsheetguru.com/blog/vba-to-select-range-with-inputbox 에서 공유되는 링크의 기본적으로 매우 단순한 버전이었습니다.
하지만 둘 다 버튼에 "홀수" 이름을 사용했고 가이드는 최종 사용자가 쉽게 이해하고 조작할 수 있도록 기본 이름/값을 사용해야 한다고 생각합니다.추가로, 나는 a를 추가했습니다.CommandButton
초기 테스트를 위해 사용자 양식과 "선택" 문을 "실행"합니다.또한 사용자 양식을 미리 작성할 때 초기 값을 제공하지만 필요한 경우 최종 사용자가 재정의할 수 있도록 허용하고 싶었습니다.
다음은 사용자 양식을 사용하는 최종 코드 조각입니다.TextBox
이름 지어진TextBox1
(기본값) 및 1CommandButton
이름 지어진CommandButton1
(기본값도 있음).
Option Explicit
Public rng As Range
Public Sub UserForm_Initialize()
Me.TextBox1.DropButtonStyle = fmDropButtonStyleReduce
Me.TextBox1.ShowDropButtonWhen = fmShowDropButtonWhenAlways
Set rng = Range("A1:B4")
TextBox1.Value = rng.Address(False, False)
End Sub
Public Sub CommandButton1_Click()
rng.Select
Unload Me
End Sub
Public Sub TextBox1_DropButtonClick()
Me.Hide
Set rng = Application.InputBox("Select the range", "Range Picker", TextBox1.Text, Type:=8)
TextBox1.Value = rng.Address(False, False)
Me.Show
End Sub
언급URL : https://stackoverflow.com/questions/4507350/provide-a-range-selection-tool-utility-to-the-user-in-excel-vba
'it-source' 카테고리의 다른 글
MariaDB 열에서 중첩된 JSON 값을 가져오는 방법은 무엇입니까? (0) | 2023.09.03 |
---|---|
내 Git 저장소가 왜 그렇게 큰가요? (0) | 2023.09.03 |
왜 사람들은 역사적으로 데이터베이스 필드 크기에 256이 아닌 255를 사용합니까? (0) | 2023.09.03 |
개체를 쓰는 동안 Git이 중단됨 (0) | 2023.09.03 |
MariaDB(마스터)에서 MySQL 5.6(슬레이브)로의 복제 (0) | 2023.09.03 |