Condividi:        

Excel - ComboBox e Topindex

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Excel - ComboBox e Topindex

Postdi Aridien » 22/03/13 00:03

ciao a tutti, il mio problema e' il seguente. ho una combobox con una lista di nomi; mentre inserisco uno di quei nomi questo si sposta alla fine del menu a tendina. per evitare questo e mantenere il nome all'inizio ho letto che si deve modificare e portare a 0 la proprieta topindex (impostata attualemnte a -1) ma, quando provo a farlo, mi dice che e' impossibile cambiare la proprieta... in vba non ho idea di come fare, suggeriemnti?
Win7 + Office 2010 Ita
Aridien
Utente Junior
 
Post: 26
Iscritto il: 15/03/13 22:50

Sponsor
 

Re: Excel - ComboBox e Topindex

Postdi Flash30005 » 22/03/13 00:46

:?:
Lo puoi inserire come valore di default (nelle proprietà)
ma forse mi sfugge qualcosa :roll:
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel - ComboBox e Topindex

Postdi Aridien » 22/03/13 09:06

nn so cosa ti sfugge :)
il problema e' proprio questo, come valore di default nelle proprietà e' messo -1(cioe ultimo visibile del menu a tendina) e mi da errore quando provo a cambiarlo
Win7 + Office 2010 Ita
Aridien
Utente Junior
 
Post: 26
Iscritto il: 15/03/13 22:50

Re: Excel - ComboBox e Topindex

Postdi Anthony47 » 22/03/13 10:48

E' all' interno di una form, vero?
Puoi comunque allegare il codice che usi per caricare i valori dell' oggetto e soprattutto descrivere il risultato che vuoi ottenere?

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel - ComboBox e Topindex

Postdi Aridien » 22/03/13 13:08

per caricare i valori uso convalida dati - elenco cosi da avere menu a tendina..
Win7 + Office 2010 Ita
Aridien
Utente Junior
 
Post: 26
Iscritto il: 15/03/13 22:50

Re: Excel - ComboBox e Topindex

Postdi Anthony47 » 22/03/13 13:29

oggi Aridien ha scritto:per caricare i valori uso convalida dati - elenco cosi da avere menu a tendina..

ieri Aridien ha scritto: ho una combobox con una lista di nomi; mentre inserisco uno di quei nomi questo si sposta alla fine del menu a tendina. per evitare questo e mantenere il nome all'inizio ho letto che si deve modificare e portare a 0 la proprieta topindex

Mi sembrano informazioni incoerenti, puoi fare un punto fermo?

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel - ComboBox e Topindex

Postdi Aridien » 22/03/13 13:49

veramnete e' cosi come ti ho descritto :) uso combobox + convalida dati..... magari sbagliando visto che nn sono una cima, tutt'altro, ma cosi funziona tutto...l'unica cosa e' che mentre scrivo il nome lo visualizzo alla fine della tendina visibile (topindex = -1) e non c'e verso di portarlo al valore di default in prima riga (valore da mettere 0) o a qualsiasi altro valore, per esempio su una tendina visibile di 10 nominativi con valore 5 quello che scrivo sta sempre nel mezzo. mi da sempre: "impossibile impostare la proprietà TopIndex. Valore della proprietà non valido".
Win7 + Office 2010 Ita
Aridien
Utente Junior
 
Post: 26
Iscritto il: 15/03/13 22:50

Re: Excel - ComboBox e Topindex

Postdi Anthony47 » 22/03/13 15:09

Penso che sia un problema di terminologia, e l' ultimo post non aiuta ; per venirne fuori prova a pubblicare un file esemplificativo, spiegando come ricreare la situazione di cui parli.
Per come fare guarda qui: viewtopic.php?f=26&t=80395
Puoi per favore anche impostare la tua configurazione di lavoro? Guarda qui: viewtopic.php?f=26&t=97449

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel - ComboBox e Topindex

Postdi Aridien » 22/03/13 17:41

Immagine
se nn si dovesse vedere:
https://www.dropbox.com/s/jb5n09ekkf2fdue/esempio.jpg

questo e' un esempio di quello che intendo. come puoi vedere nella prima riga io scrivo "abati" e mentre lo faccio la riga di selezione si sposta sul primo record corrispondente; solo che il record appare sul fondo del menu a tendina mentre io vorrei fosse in cima.
Win7 + Office 2010 Ita
Aridien
Utente Junior
 
Post: 26
Iscritto il: 15/03/13 22:50

Re: Excel - ComboBox e Topindex

Postdi Anthony47 » 23/03/13 02:05

Con questo livello di dettaglio la mia migliore ipotesi e' che stai usando un ListBox, immagino dalla collezione "Controlli ActiveX", che visualizza l' elenco associato tramite la proprieta' ListFillRange e che ha associata anche una LinkedCell.
Nella stessa LinkedCell hai inserito una convalida da elenco, e l' elenco e' lo stesso elenco di origine del listbox (quello impostato tramite la ListFillRange).
Ora non so che senso ha tutto cio' (tra le prime cose avevo chiesto di "descrivere il risultato che vuoi ottenere", ma molti considerano queste domande come una invasione della loro privacy); comunque l' effetto e':
-se selezioni una voce del ListBox, la linkedcell assume quello stesso valore
-se digiti nella linkedcell (o introduci tramite la convalida da elenco) un valore presente nell' elenco del listbox, il listbox seleziona la stessa voce.
Mentre fa questa selezione la logica che viene usata e' di far scorrere l' elenco fino a visualizzare la voce nella finestra visibile; il risultato e' che se la nuova voce e' "piu' in basso" rispetto alla selezione precedente, la voce sara' visualizzata in fondo alla finestra; se invece fosse "piu' in alto" allora la voce sarebbe visualizzata in testa alla finestra.
La richiesta e' di visualizzare la voce selezionata; questo si puo' fare con una macro che posizioni TopIndex al valore richiesto. Ad esempio:
Codice: Seleziona tutto
Private Sub ListBox1_Change()
Dim myInd, mySplit, myRan As Range
mySplit = Split(ListBox1.ListFillRange, "!")
'>>>
If UBound(mySplit, 1) > LBound(mySplit, 1) Then
    Set myRan = Sheets(mySplit(LBound(mySplit, 1))).Range(mySplit(LBound(mySplit, 1) + 1))
Else
    Set myRan = ActiveWindow.Range(mySplit(LBound(mySplit, 1)))
End If
'<<<
myInd = Application.Match(ListBox1.Value, myRan, 0)
ListBox1.TopIndex = myInd - 1
'[J1] = myInd
End Sub
Le istruzioni comprese tra >>> e <<< mi sono servite per ricostruire l' indirizzo della ListFillRange, che comunque non deve essere impostato sotto forma di "nome di intervallo"; tuttavia siccome immagino che tu conosca benissimo l' indirizzo di questo intervallo tanto vale che elimini quel gruppo di istruzioni e imposti myRan direttamente su quell' intervallo.

Tutto questo sulla base della mia migliore interpretazione di quanto vedo.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel - ComboBox e Topindex

Postdi Aridien » 23/03/13 04:59

Anthony47 ha scritto:....Con questo livello di dettaglio la mia migliore ipotesi e' che stai usando un ListBox, immagino dalla collezione "Controlli ActiveX", che visualizza l' elenco associato tramite la proprieta' ListFillRange e che ha associata anche una LinkedCell.
Nella stessa LinkedCell hai inserito una convalida da elenco, e l' elenco e' lo stesso elenco di origine del listbox (quello impostato tramite la ListFillRange).....

precisamente ho fatto questo ma usando una combobox al posto di una listbox; questo e' il codice, preso nn ricordo da dove, che ho usato;in realtà quello che volevo ottenere l'ho spiegato qua http://www.pc-facile.com/forum/viewtopic.php?f=26&t=98685 postando anche di volta in volta cosa stavo ottenendo, ma e' stato praticamente un monologo. Ho provato ad adattare il tuo suggerimento ma non ci sono riuscito.

Codice: Seleziona tutto
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim str As String
Dim cboTemp As OLEObject
Dim ws As Worksheet
Set ws = ActiveSheet
On Error GoTo errHandler

If Target.Count > 1 Then GoTo exitHandler

Set cboTemp = ws.OLEObjects("TempCombo")
  On Error Resume Next
If cboTemp.Visible = True Then
  With cboTemp
    .Top = 100
    .Left = 100
    .ListFillRange = "Inserimento!$H$44:$H$47000"
    .LinkedCell = ""
    .Visible = False
    .Value = ""
  End With
End If

  On Error GoTo errHandler
  If Target.Validation.Type = 3 Then
    'if the cell contains a data validation list
    Application.EnableEvents = False
    'get the data validation formula
    str = Target.Validation.Formula1
    str = Right(str, Len(str) - 1)
    With cboTemp
      'show the combobox with the list
      .Visible = True
      .Left = Target.Left
      .Top = Target.Top
      .Width = Target.Width
      .Height = Target.Height + 5
      .ListFillRange = ws.Range(str).Address
      .LinkedCell = Target.Address
      End With
    cboTemp.Activate
    'open the drop down list automatically
    Me.TempCombo.DropDown
  End If

exitHandler:
  Application.ScreenUpdating = True
  Application.EnableEvents = True
  Exit Sub
errHandler:
  Resume exitHandler

End Sub
Win7 + Office 2010 Ita
Aridien
Utente Junior
 
Post: 26
Iscritto il: 15/03/13 22:50

Re: Excel - ComboBox e Topindex

Postdi Aridien » 23/03/13 08:09

ho brovato a sostituire la combobox con la listbox nel mio codice postato sopra, e l'istruzione TopIndex funziona. Quindi deduco il problema sia proprio della combobox. ora se fosse possibile mi servirebbe una manina per trasformare in tutto il codice da combbox a listbox
Win7 + Office 2010 Ita
Aridien
Utente Junior
 
Post: 26
Iscritto il: 15/03/13 22:50

Re: Excel - ComboBox e Topindex

Postdi Aridien » 23/03/13 10:18

se non uso combobox (o listbox) associato a convalida dati, con il codice che ho inserito non viene attivata la lista
Win7 + Office 2010 Ita
Aridien
Utente Junior
 
Post: 26
Iscritto il: 15/03/13 22:50

Re: Excel - ComboBox e Topindex

Postdi Anthony47 » 24/03/13 19:50

Per dare un contributo dovresti spiegare quale obiettivo vuoi raggiungere, e se l' ambiente di test richiede piu' di 5 minuti per essere creato anche un file di esempio.
Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Excel - ComboBox e Topindex":


Chi c’è in linea

Visitano il forum: Nessuno e 30 ospiti