2013-08-08 12 views
7

Chcę zezwolić użytkownikowi na wybór zakresu, który może znajdować się w innym skoroszycie.Okno dialogowe VBA, aby wybrać zakres w innym skoroszycie

Próbowałem to zrobić przy użyciu inputbox ("", typ: = 8), który służy do wybierania danych w skoroszycie, ale odmawia zezwolenia na wybór zakresu w innym skoroszycie.

Dlatego chciałbym okno dialogowe, które pozwala mi wykonać to zadanie.

+0

użyć kontrolę REFEDIT w UserForm. Jednak musisz być bardzo ostrożny przy korzystaniu z Kontroli RefEdit, aby uzyskać zakresy z innych skoroszytów, inaczej Excel zawiesi się! Daj mi znać, jeśli chcesz mieć przykład, ponieważ jest to coś, co jest mniej znane ... –

Odpowiedz

19

Ponieważ byłem wolny, stworzyłem dla was przykładem

Tworzenie Userform i umieścić ComboBox, A RefEdit sterowania i Label

enter image description here

Następnie wklej ten kod w UserForm

Private Sub UserForm_Initialize() 
    Dim wb As Workbook 

    '~~> Get the name of all the workbooks in the combobox 
    For Each wb In Application.Workbooks 
     ComboBox1.AddItem wb.Name 
    Next 

    ComboBox1 = ActiveWorkbook.Name 
End Sub 

'~~> This lets you toggle between all open workbooks 
Private Sub Combobox1_Change() 
    If ComboBox1 <> "" Then Application.Workbooks(ComboBox1.Text).Activate 

    Label1.Caption = "": RefEdit1 = "" 
End Sub 

'~~> And this lets you choose the relevant range 
Private Sub RefEdit1_Change() 
    Label1.Caption = "" 

    If RefEdit1.Value <> "" Then _ 
    Label1.Caption = "[" & ComboBox1 & "]" & RefEdit1 
End Sub 

To właśnie otrzymujesz po uruchomieniu UserForm

enter image description here


enter image description here


enter image description here

+2

Niezły, Siddharth. –

+1

Nie powiedzie się, jeśli docelowa nazwa skoroszytu ma spacje lub jeśli w miejscu docelowym jest spacja (przynajmniej w programie Excel 2007). Musisz podzielić wartość refEdit wokół "!", Usunąć cudzysłowy wokół nazwy arkusza, jeśli RefEdit je dodał, i ustawić odniesienie jako "[nazwa skoroszytu] nazwa arkusza"! Odwołanie (proszę zwrócić uwagę na pojedyncze cytaty) – personne3000