2013-08-08 8 views
7

Desidero consentire a un utente di selezionare un intervallo che è probabile che si trovi in ​​un'altra cartella di lavoro.VBA Finestra di dialogo per selezionare l'intervallo in una cartella di lavoro diversa

Ho tentato di farlo con inputbox ("", type: = 8) che funziona per selezionare i dati nella cartella di lavoro ma si rifiuta di permettermi di selezionare un intervallo in una cartella di lavoro diversa.

Quindi mi piacerebbe una finestra di dialogo che mi permetta di eseguire questo compito.

+0

Utilizzare un controllo ModRif in un form utente. Tuttavia devi stare molto attento mentre usi RefEdit Control per ottenere intervalli da altre cartelle di lavoro che Excel si bloccherà! Fammi sapere se vuoi un esempio perché questo è qualcosa che è molto meno conosciuto ... –

risposta

19

Fin da quando ero libero, ho creato un esempio per voi

Creare un Userform e inserire un ComboBox, A RefEdit controllo ed una Label

enter image description here

Successivo incollare questo codice nel 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 

Questo è quello che ottieni quando si esegue il form

enter image description here


enter image description here


enter image description here

+2

Bello, Siddharth. –

+1

Ciò avrà esito negativo se il nome della cartella di lavoro di destinazione contiene spazi o se il foglio di destinazione contiene spazi (almeno in Excel 2007). È necessario dividere il valore refEdit attorno a "!", Rimuovere le virgolette attorno al nome del foglio se RefEdit ha aggiunto quelle e impostare il riferimento come "nome foglio [nome cartella di lavoro]"! Riferimento (annotare le virgolette singole) – personne3000

Problemi correlati