Condividi:        

problemini con vba

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

problemini con vba

Postdi salvo0678 » 17/12/06 23:51

salve a tutti,
vi spiego, sto cercando di crearmi con excel un programmino per la gestione e spostamenti di magazzino
al momento ho tre problemini

1) è possibile associare un tasto che mi apra la funzione ordina di excel ?

2) se io ho una cella selezionata e clicco su un pulsante mi si apre una form, mi deve copiare nelle celle della form i contenuti della riga selezionata penso si possa fare con setfocus ma ho provato e non mi funziona...(dimenticavo si può su un foglio ad ogni selezione della cella (da me o alla fine di una ricerca)mi si colora tutta la riga?

3) nella funzione ricerca ho una form con due combox su una metto il criterio di ricerca sull' altra il ranga equivalente, bene adesso funziona in questo modo:
selezione il criterio (es. articolo) e nella combobox2 cliccando sul pulsante a tendina non mi compare nulla, ma se prima di inserire l'articolo premo esegui (essendo il valore combobox="" mi appare il msg inserire l'articolo) e successivamente il pulvante a tendina mi compare la lista selezionata in questo caso articoli.... xchè??? :evil: :evil:

ringrazio chi potrà aiutarmi :D
salvo0678
Newbie
 
Post: 4
Iscritto il: 17/12/06 23:26

Sponsor
 

risolto problema2

Postdi salvo0678 » 18/12/06 14:11

il problema due sono riuscito a risolvere almeno in parte xchè alla selezione non riesco a far colorare tutta la riga e alla deselezione farla tornare normale
vi prego qualcuno mi aiuti......... :cry:
salvo0678
Newbie
 
Post: 4
Iscritto il: 17/12/06 23:26

Postdi maxmula » 21/12/06 21:16

Ciao.
Innanzitutto un consiglio: se puoi, specifica più chiarmente nel titolo il genere dei tuoi "problemini" ;-)


Venendo al tuo quesito, per decolorare la riga precedentemente selezionata la devi colorare di nuovo... col colore che vuoi considerare di "sfondo" per la tua tabella (verosimilmente il "nessun riempimento)

Il problema è fare in modo che excel "si ricordi" quale riga avevi selezionato prima!

Un modo è questo:
- ti servono 2 celle "in posizione defilata" (che poi magari provvederai a nascondere), ad esempio Z1 e Z2. In questo esempio, facciamo che Z1 conterrà L'indirizzo della cella attualmente selezionata, Z2 quella precedente. Ovviamente, all'inizio saranno vuote! ;)

- Dopodiché, in VBA, devi scrivere una piccola macro per l'evento SelectionChange del foglio in cui si trova la tua tabella:

Codice: Seleziona tutto
'Traccia la posizione
CELLA_ATTUALE=activecell.addresslocal
VECCHIA_CELLA=range("Z2").value
range("z2").formula=range("z1").value
range("z1").formula=CELLA_ATTUALE

'Colora le righe
VECCHIA_RIGA=range(vecchia_cella).row
NUOVA_RIGA=range(cella_attuale).row


cells(VECCHIA_RIGA,1).entirerow.interior.colorindex=xlNone  'Nessun colore per la vecchia riga)

cells(VECCHIA_RIGA,1).entirerow.interior.colorindex=4  'Colora la nuova riga, in questo caso di verde)



In questo modo tieni traccia dell'ultima cella selezionata.
Al posto del ColorIndex, puoi usare la funzione RGB, che ti permette l'utilizzo di tutti i colori che vuoi. Per il suo utilizzo, però, ti rimando alla guida online ;)
Tieni solo presente che colorindex=xlNone è diverso da RGB(255,255,255) !

Ciao,
MAx
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Postdi Anthony47 » 22/12/06 20:31

Seguendo le informazioni inviate via pm, propongo il seguente approccio:
-l' elenco in X5:X8 modificalo in 1-Codice, 2-Articolo, 3- etc etc
-dalla Sub Userform_Activate di "Ricerca", elimini le istruzioni ComboBox2.RowSource con cui cerchi di settare l' origine dati del combobox;
- come Sub ComboBox1_Change usi il seguente codice:
Codice: Seleziona tutto
Private Sub ComboBox1_Change()
Ricerca.ComboBox2.Value = ""
Indice = Left(Ricerca.ComboBox1.Value, 1) * 1
ARighe = Application.WorksheetFunction.Subtotal(3, Range("A4").Offset(0, Indice - 1).Range("A1:A65500"))
Range(Cells(4, Indice), Cells(4 + ARighe, Indice)).Name = "DatiDue"
Ricerca.ComboBox2.RowSource = "DatiDue"
End Sub


Nel codice Private Sub commandbutton1_click, io lascerei solo il check che i valori dei combobox non siano Vuoti e rimuoverei le istruzioni ComboBox2.RowSource che vorrebbero ridefinire l' origine dei dati per ComboBox2.
If ComboBox1.Value = "articolo" Then
Se in qualche posto usi i valori "Codice, Articolo, Costruttore, etc etc" ricorda che dovresti cambiarli in "1-Codice, 2-Articolo, etc", stando attenti alle Maiuscole quando ci sono.

Non ho seguito oltre l' architettura del tuo codice, ne' ho capito il problema di colorare le celle.
Vedi se con quanto suggerito riesci a fare un passo avanti e poi fatti sentire.

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

Postdi Anthony47 » 22/12/06 20:33

La riga
If ComboBox1.Value = "articolo" Then

voleva essere un esempio di istruzione che devi modificare in
Codice: Seleziona tutto
If ComboBox1.Value = "1-Articolo" Then


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

Postdi salvo0678 » 08/01/07 07:54

ciao, maxmula intanto grazie x il tuo interessamento al mio problema...
Ho provato a creare una nuova sub nel foglio della tabella ma non succede nulla, ne mi da un errore e ne mi colora le righe, mente se la inserisco nella 'Worksheet_Activate' mi da errore.
Dove sbaglio?!?! :-?
salvo0678
Newbie
 
Post: 4
Iscritto il: 17/12/06 23:26

Postdi Anthony47 » 17/01/07 20:30

Ciao salvo,
nel messaggio privato dici:
ciao ho provato la tua sub, ma non riesco a farla funzionare quando premo il pulsante non succede nulla non mi attiva le macro xchè???

Il pulsante di cui parli quale e'? Riguardando le informazioni che fornisti 4 settimane fa, con il pulsante Ricerca (su Foglio1) dovresti attivare la UserForm1 con una tua macro (la Private Sub UserForm_Activate()); POI, quando inserisci un valore nella "prima chiave di ricerca" scatta la macro che ti fornii, che ha come obbiettivo il rendere la seconda chiave subordinata alla prima.
La macro diceva:
Codice: Seleziona tutto
Private Sub ComboBox1_Change()
Ricerca.ComboBox2.Value = ""
Indice = Left(Ricerca.ComboBox1.Value, 1) * 1
ARighe = Application.WorksheetFunction.Subtotal(3, Range("A4").Offset(0, Indice - 1).Range("A1:A65500"))
Range(Cells(4, Indice), Cells(4 + ARighe, Indice)).Name = "DatiDue"
Ricerca.ComboBox2.RowSource = "DatiDue"
End Sub


Vuoi dire che non parte questa macro quando inserisci la prima chiave o che non si attiva la userform col pulsante Ricerca?
Cerca di essere piu' preciso, magari setta dei break nel codice in modo da seguirne l' avanzamento: seleziona una riga e poi F9; l' esecuzione si ferma prima di eseguire quella istruzione, e puoi andare passo passo con F8 o continuare con F5; ripetere per togliere il break.

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


Torna a Applicazioni Office Windows


Topic correlati a "problemini con vba":


Chi c’è in linea

Visitano il forum: Marius44 e 74 ospiti