오랜만에 쓸만한? 질문이 올라왔습니다. 여러 거래처를 관리하고 있는 엑셀 시트에서
바로 해당 거래선의 일부 이름으로 검색해서 바로 시트를 선택하고 싶다는 질문이네요.
http://www.clien.net/cs2/bbs/board.php?bo_table=kin&wr_id=3735375
함수로서 기능을 잘 사용하시는 분은 함수로 사용하시고 저는 VBA가 편하기 때문에
이것을 도구로 사용해서 사용자 폼을 뛰어서 편리하게 시트를 검색, 선택하게 했습니다.
너무 간단해서 설명을 할 내용도 별로 없어 보입니다.
Option Explicit
우선 사용자 폼을 선택하면 LIST시트를 제외한 모든 시트를 목록에 뿌리는 루틴입니다.
사실 없어도 되는 기능입니다. 어짜피 검색 필드를 통해 검색 목록을 뿌리면 지워지는
항목이므로 … 그래도 이렇게 전체 시트를 보여줄 수 있다는 기능입니다.
Sub View_All_Sht_Name()
Dim sht As Worksheet
Dim sht_name As String
For Each sht In Worksheets
If sht.Name <> “LIST” Then
UserForm1.ListBox1.AddItem sht.Name
End If
Next sht
End Sub
이제 검색할 내용을 입력하고 입력 완료를 위해 오른쪽 화살표나 엔터키를 눌러주세요.
입력은 한글을 기본으로 입력되도록 설정해 두었습니다.
Private Sub TextBox1_Change()
Dim sht As Worksheet
Dim sht_name As String
UserForm1.ListBox1.Clear
For Each sht In Worksheets
If InStr(1, sht.Name, TextBox1.Text, 1) > 0 Then
If sht.Name <> “LIST” Then
UserForm1.ListBox1.AddItem sht.Name
End If
End If
Next sht
End Sub
검색된 시트를 클릭하면 바로 활성화 됩니다.
Private Sub ListBox1_Click()
Dim sht As Worksheet
Dim sel_sht As String
sel_sht = UserForm1.ListBox1.List(UserForm1.ListBox1.ListIndex)
For Each sht In Worksheets
If sht.Name = sel_sht Then
sht.Activate
End If
Next sht
End Sub
개발도구> 디자인모드에서 ActiveX 버튼 하나 만드시고 아래 매크로 연결시켜 주세요.
사용자 폼이 항상 시트 위에 윈도우로 떠 있도록 하는 것인데 검색할 때마다 폼을
띄우시려면 modalless 제거해 주세요
Private Sub CommandButton1_Click()
UserForm1.Show modalless
End Sub
Private Sub UserForm_Initialize()
Call View_All_Sht_Name
End Sub
첨부 화일 : 20160525-Sheet 이름으로 검색 선택
5월 25 2016
엑셀(EXCEL) – 시트 이름으로 검색해서 원하는 시트 선택
오랜만에 쓸만한? 질문이 올라왔습니다. 여러 거래처를 관리하고 있는 엑셀 시트에서
바로 해당 거래선의 일부 이름으로 검색해서 바로 시트를 선택하고 싶다는 질문이네요.
http://www.clien.net/cs2/bbs/board.php?bo_table=kin&wr_id=3735375
함수로서 기능을 잘 사용하시는 분은 함수로 사용하시고 저는 VBA가 편하기 때문에
이것을 도구로 사용해서 사용자 폼을 뛰어서 편리하게 시트를 검색, 선택하게 했습니다.
너무 간단해서 설명을 할 내용도 별로 없어 보입니다.
Option Explicit
우선 사용자 폼을 선택하면 LIST시트를 제외한 모든 시트를 목록에 뿌리는 루틴입니다.
사실 없어도 되는 기능입니다. 어짜피 검색 필드를 통해 검색 목록을 뿌리면 지워지는
항목이므로 … 그래도 이렇게 전체 시트를 보여줄 수 있다는 기능입니다.
Sub View_All_Sht_Name()
Dim sht As Worksheet
Dim sht_name As String
For Each sht In Worksheets
If sht.Name <> “LIST” Then
UserForm1.ListBox1.AddItem sht.Name
End If
Next sht
End Sub
이제 검색할 내용을 입력하고 입력 완료를 위해 오른쪽 화살표나 엔터키를 눌러주세요.
입력은 한글을 기본으로 입력되도록 설정해 두었습니다.
Private Sub TextBox1_Change()
Dim sht As Worksheet
Dim sht_name As String
UserForm1.ListBox1.Clear
For Each sht In Worksheets
If InStr(1, sht.Name, TextBox1.Text, 1) > 0 Then
If sht.Name <> “LIST” Then
UserForm1.ListBox1.AddItem sht.Name
End If
End If
Next sht
End Sub
검색된 시트를 클릭하면 바로 활성화 됩니다.
Private Sub ListBox1_Click()
Dim sht As Worksheet
Dim sel_sht As String
sel_sht = UserForm1.ListBox1.List(UserForm1.ListBox1.ListIndex)
For Each sht In Worksheets
If sht.Name = sel_sht Then
sht.Activate
End If
Next sht
End Sub
개발도구> 디자인모드에서 ActiveX 버튼 하나 만드시고 아래 매크로 연결시켜 주세요.
사용자 폼이 항상 시트 위에 윈도우로 떠 있도록 하는 것인데 검색할 때마다 폼을
띄우시려면 modalless 제거해 주세요
Private Sub CommandButton1_Click()
UserForm1.Show modalless
End Sub
Private Sub UserForm_Initialize()
Call View_All_Sht_Name
End Sub
첨부 화일 : 20160525-Sheet 이름으로 검색 선택
By vinipapa • 무른모 • 0