Condividi:        

ComboBox

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

ComboBox

Postdi carmelo.nicita » 18/01/10 14:59

Salve a tutti,

c'è una questione in excel che mi sta facendo impazzire...
Allora io ho questa situazione: devo, attraverso un pulsante, creare un elenco stile combobox in una cella di un foglio. Fino a qui ci riesco, però poi, per fare in modo che alla selezione di uno degli elementi della lista dell'elenco si attivi un'operazione (ad esempio un copia&incolla di altri dati), non so proprio come sbrogliare la situazione.

Per creare la combobox di scelta ho usato questo script dove la variabile BigElenco rappresenta una stringa di tutti gli elementi dell'elenco separati da virgole.

With Range("B" & 10)
.Locked = False
.FormulaHidden = False
.Interior.ColorIndex = xlNone
.Validation.Delete
.Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=BigElenco
.Select
End With


Se qualcuno ha un'idea (o più) per risolvere il mio dilemma gli ne sarò grato.

Ciao e buon lavoro
carmelo.nicita
Utente Junior
 
Post: 20
Iscritto il: 14/09/09 07:42

Sponsor
 

Re: ComboBox

Postdi Anthony47 » 18/01/10 21:41

Perdona, quello che inserisci e' una "convalida" su elenco.
Una volta effettuata la scelta da elenco (o una digitazione da tastiera convalidata), puoi usare l' evento Worksheet_Change per fare quello che vuoi tu; ad esempio guarda questa discussione: viewtopic.php?f=26&t=84396 , la prima risposta.

Se lo spunto non ti e' sufficiente posta ancora spiegando che cosa vorresti fare, quando inserisci un valore in B10.

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

Re: ComboBox

Postdi carmelo.nicita » 19/01/10 08:30

Ciao Anthony,

hai proprio ragione (in effetti non sono molto pratico) però giustamente lo script che ho postato non genera nessun comando alla selezione di un elemento dell'elenco. Poi ho provato con il tuo suggerimento e in effetti si scatena qualche evento solo che ora il problema è che si pianta l'algoritmo in un punto e non riesco a capire perchè. Qui di seguito metto i due script incriminati :

Codice: Seleziona tutto
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Select Case Target.Column
   
    Case 2
        If Target.Value = "_AUTO" Then
            ' trovo gli elementi che fanno parte della famiglia AUTO
            Worksheets("_AUTO").Activate
            Dim TipiAuto As String
            Dim tipoauto As String
            With Range("B:B")
                Set c = .Find("Fiat Punto", LookIn:=xlValues)
                If Not c Is Nothing Then
                    firstAddress = c.Address
                    Do
                        tipoauto = c.Value
                        TipiAuto = tipoauto + ", " + TipiAuto
                        Set c = .FindNext(c)
                        Loop While Not c Is Nothing And c.Address <> firstAddress
                End If
            End With
            ' crea la combobox accanto alla precedente che specifica i tipi di macchina a disposizione
            Dim riga As Integer
            Dim colonna As Integer
            riga = Target.Row
            colonna = Target.Column + 1
            Call ComboLoad(colonna, riga, TipiAuto)
        End If
   
    End Select
   
End Sub


Questo algoritmo avrebbe lo scopo di attivare la "ComboLoad" quando nel range ("B:B") viene inserito il valore "_AUTO". La ComboLoad si porta dietro la riga e la colonna corrispondenti alla cella in cui è stato inserito il valore e dovrebbe portarsi dietro anche la stringa (TipiAuto) che viene generata nel corpo del metodo e che serve per creare un nuovo elenco accanto al precedente nel quale ho selezionato "_AUTO", infatti la stringa dell'elenco degli elementi se li prende dal worksheet _AUTO dove ricerca i tipi di Fiat Punto.

Di seguito inserisco anche lo script della ComboLoad:

Codice: Seleziona tutto
Sub ComboLoad(colonna As Integer, riga As Integer, lista As String)
    Worksheets("CONFIGURATORE").Activate
    With Range(colonna & riga)
        .Locked = False
        .FormulaHidden = False
        .Interior.ColorIndex = xlNone
        .Validation.Delete
        .Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:=lista
        .Select
    End With
End Sub

Lo script sopra si pianta alla seconda riga "With Range(colonna...)" con l'errore: "Metodo 'Range' dell'oggetto '_Global' non riuscito". Ecco questo punto non capisco perchè mi tira fuori l'errore e ancor più, la cosa strana è che la variabile "lista" che viene passata è vuota.

Forse sono stato troppo lungo ma per cercare di spiegarmi meglio ho preferito mettere tutti gli script.

Grazie mille per l'aiuto di ieri e confido in uns risoluzione anche di questo.

Buon lavoro ciao ciao
carmelo.nicita
Utente Junior
 
Post: 20
Iscritto il: 14/09/09 07:42

Re: ComboBox

Postdi Flash30005 » 19/01/10 10:13

prova a sostituire, nella seconda macro
Codice: Seleziona tutto
    Worksheets("CONFIGURATORE").Activate
    With Range(colonna & riga)  '<<< questa riga

con
Codice: Seleziona tutto
    Worksheets("CONFIGURATORE").Activate
    With Cells(riga, colonna)


Fai sapere
Ciao
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: ComboBox

Postdi carmelo.nicita » 19/01/10 10:34

Ciao Flash,

ho provato con "With Cells(riga, colonna)" al posto di "With Range(colonna & riga)" ma c'è sempre un errore che compare e la lista rimane vuota, cioè non si porta dietro la stringa che gli faccio creare.

Veramente non so quale sia la ragione.

Grazie mille lo stesso
carmelo.nicita
Utente Junior
 
Post: 20
Iscritto il: 14/09/09 07:42

Re: ComboBox

Postdi Flash30005 » 19/01/10 10:49

Beh io ho visto che l'errore "Global" corrispondeva a quella riga e correggendola riusciva a "passare" ma mi si ferma all'ultimo riga codice del With... perché non ho i fogli come ce li hai tu e non so come intervenire, magari Anthony ti saprà dire qualcosa in più oppure invia il tuo file (se ci sono dati sensibili puoi modificarli oppure inviarmi il file in privato).

ciao
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: ComboBox

Postdi carmelo.nicita » 19/01/10 11:45

Ciao Flash,

la domanda è forse troppo scontata ma come faccio ad inviarti il file che ho preparato?

Grazie
carmelo.nicita
Utente Junior
 
Post: 20
Iscritto il: 14/09/09 07:42

Re: ComboBox

Postdi Flash30005 » 19/01/10 12:53

Il primo topic (Annunci) di questa sezione parla appunto di questo
http://www.pc-facile.com/forum/viewtopic.php?f=26&t=80395

puoi, quindi, mettere in un server host il tuo file e inviare il link fornito dal server in un Post o in un PM
il secondo link fornito dal server serve per cancellarlo dall'host.

Ciao
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: ComboBox

Postdi Anthony47 » 19/01/10 15:53

E' errato Range(colonna & riga) perche' "colonna" e "riga" sono due numeri; quindi userai Cells(riga, colonna)
Io toglierei anche le definizioni del tipo dati in Sub ComboLoad(colonna As Integer, riga As Integer, lista As String), quindi solo Sub ComboLoad(colonna, riga, lista)
Dopodiche' se va ancora in errore va debuggata la macro sul tuo ambiente; per suggerimenti sul debug prova a guardare questo thread: viewtopic.php?t=65537

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

Re: ComboBox

Postdi carmelo.nicita » 20/01/10 08:09

Ciao Anthony,

grazie mille!!
Ora provo con il tuo suggerimento, in quanto al debug ho provato tantissimo e non sono riuscito a capire la causa del problema. Ad ogni modo continuo a provare e nel frattempo ho preso un'altra strada per cercare di fare la mia applicazione.

Grazie ancora e buona giornata
carmelo.nicita
Utente Junior
 
Post: 20
Iscritto il: 14/09/09 07:42

Re: ComboBox

Postdi Anthony47 » 20/01/10 14:49

Usando il metodo descritto nel messaggio linkato, metti un break sull' inizio della macro SelectionChange, poi esegui passo passo le istruzioni; verifica cosa succede sul foglio e come cambiano le variabili in uso: prima o poi vedrai che quello che succede e' diverso da quello che ti aspettavi, e a quel punto potrai valutare la situazione con tutti i dati davanti.

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


Torna a Applicazioni Office Windows


Topic correlati a "ComboBox":


Chi c’è in linea

Visitano il forum: Nessuno e 49 ospiti