Condividi:        

[EXCEL] Attivare menù quando clicco su una cella

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] Attivare menù quando clicco su una cella

Postdi Alea » 03/07/12 07:50

Buon giorno a tutti.
Sto sviluppando un nuovo file excel per la gestione dei progetti del mio ufficio.
I dati della tabella che devo compilare sono per metà "nuovi" ogni volta, per l'altra metà sono ripetitivi.
Mi domandavo se era possibile, dopo aver creato un foglio gli elenchi ripetitivi, tramite un click del mouse sulla cella far comparire l'elenco interessato.
Provo a spiegare con un esempio:
- nel foglio "Ref" ho i miei elenchi tipo:
Prefabbricatore Sistema ecc.
A 1
B 2
- nel foglio "Progetti" nella cella H10 ho il titolo della tabella "Prefabbricatore"
- nel foglio "Progetti" nella cella I10 ho il titolo della tabella "Sistema"

quello che vorrei è cliccare su H11 per selezionare il prefabbricatore interessato, poi stessa cosa su I11 per il sistema e così via a scendere per ogni nuovo progetto che devo inserire.
Credete sia possibile fare una cosa del genere?
Serve una macro oppure c'è qualche opzione di excel che può permettermi di farlo.
Io avevo pensato di creare un'infinità di menu a tendina ma sinceramente non mi pare molto "bello" da vedere.

Grazie a tutti per qualsiasi aiuto.
Ciao
Alea
Utente Senior
 
Post: 145
Iscritto il: 24/07/06 14:12

Sponsor
 

Re: [EXCEL] Attivare menù quando clicco su una cella

Postdi Flash30005 » 03/07/12 08:27

Sicuramente fattibile tramite macro ma per realizzarla occorre capire meglio cosa intendi fare
Il mio consiglio, per essere più esaustivo, è inviare il file mascherando dati sensibili ma lasciando inalterati la disposizione dei campi interessati

ciao

P.s. Per inviare il file vedi procedura indicata all'inizio di questa sessione
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] Attivare menù quando clicco su una cella

Postdi Alea » 03/07/12 08:53

Ciao Flash e grazie per l'interessamento.
allego il file pulito come da te richiesto. troverai due fogli come già accennato prima. Il foglio Ref con indicati i dati che devo andare a scegliere e il foglio Progetti attuali con un esempio di come deve essere compilato.
Fammi sapere se hai bisogno di altro
Grazie mille
Ciao

http://uploading.com/files/92f468c1/Pro ... acile.rar/
Alea
Utente Senior
 
Post: 145
Iscritto il: 24/07/06 14:12

Re: [EXCEL] Attivare menù quando clicco su una cella

Postdi Flash30005 » 03/07/12 09:11

C'è qualcosa che non mi torna
trovo prefabbricatore in O10 e O11
e in O12 (nuovo progetto) cella vuota
suppongo che tu voglia cliccare in qusta cella e inserire un prefabbricatore della colonna J del foglio Ref (?)
e cliccando su N12 (di progetti) poter scegliere un "seguito da" della colonna H di Ref?
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] Attivare menù quando clicco su una cella

Postdi Alea » 03/07/12 09:27

Si si giustissimo... ti chiedo scusa, per scrivere il primo post avevo usato un altro file
Alea
Utente Senior
 
Post: 145
Iscritto il: 24/07/06 14:12

Re: [EXCEL] Attivare menù quando clicco su una cella

Postdi Flash30005 » 03/07/12 09:46

Ok allora
Nel foglio Ref creerai dei nomi elenchi da Menu->Inserisci->Nome->definisci
Selezioni prima i range indicati (Es.: B4:B18 e poi definisci nome indicato)
Da B4:B18 darai nome TipoG
Da D4:D9 nome TipoC
Da F4:F9 nome Fase
H4:H9 nome Seguito
J4:J5 nome Prefabbricatore

poi, prova ad inserire questo codice nel vba del foglio "Progetti" (non nel modulo)

Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
UR = Range("A" & Rows.Count).End(xlUp).Row
CheckArea = "J" & UR & ",K" & UR & ",L" & UR & ",N" & UR & ",O" & UR
If Not Application.Intersect(ActiveCell, Range(CheckArea)) Is Nothing Then
    ActiveCell.Validation.Delete
    ActiveCell.Validation.Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator:=xlBetween
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
UR = Range("A" & Rows.Count).End(xlUp).Row
CheckArea = "J" & UR & ",K" & UR & ",L" & UR & ",N" & UR & ",O" & UR
If Not Application.Intersect(ActiveCell, Range(CheckArea)) Is Nothing Then
    If (Selection.Rows.Count + Selection.Columns.Count) > 2 Then Exit Sub
    Select Case Target.Column
    Case 10
    Elenco = "=TipoG"
    Case 11
    Elenco = "=TipoC"
    Case 12
    Elenco = "=Fase"
    Case 14
    Elenco = "=Seguito"
    Case 15
    Elenco = "=prefabbricatore"
    End Select
ActiveCell.Validation.Delete
ActiveCell.Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Elenco
End If
End Sub


la macro crea una convalida nell'ultima cella corrispondente all'ultima riga della colonna A occupata e nella cella cliccata si attiverà un elenco a discesa, al variare della cella (inserimento di un nome selezionato) la convalida sparirà.
fai sapere se va bene così
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: [EXCEL] Attivare menù quando clicco su una cella

Postdi Alea » 03/07/12 10:23

Direi che è perfetta.
Grazie mille Flash.

Non è che posso chiederti un'altra "piccola" cosetta :)
Come puoi vedere nel foglio Progetti Attuali i bordi della tabella sono particolari. C'è la possibilità di poter inserire una nuova riga con la stessa formattazione con una macro?
Alea
Utente Senior
 
Post: 145
Iscritto il: 24/07/06 14:12

Re: [EXCEL] Attivare menù quando clicco su una cella

Postdi Flash30005 » 03/07/12 11:11

Ho modificato solo il codice nella selezione del foglio ma replico il codice completo (Vba Foglio)
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
UR = Range("A" & Rows.Count).End(xlUp).Row
CheckArea = "J" & UR & ",K" & UR & ",L" & UR & ",N" & UR & ",O" & UR
If Not Application.Intersect(ActiveCell, Range(CheckArea)) Is Nothing Then
    ActiveCell.Validation.Delete
    ActiveCell.Validation.Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator:=xlBetween
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
UR = Range("A" & Rows.Count).End(xlUp).Row
CheckArea = "J" & UR & ",K" & UR & ",L" & UR & ",N" & UR & ",O" & UR
CheckAreaA = "A" & UR + 1
If Not Application.Intersect(ActiveCell, Range(CheckArea)) Is Nothing Then
    If (Selection.Rows.Count + Selection.Columns.Count) > 2 Then GoTo SaltaCA
    Select Case Target.Column
    Case 10
    Elenco = "=TipoG"
    Case 11
    Elenco = "=TipoC"
    Case 12
    Elenco = "=Fase"
    Case 14
    Elenco = "=Seguito"
    Case 15
    Elenco = "=prefabbricatore"
    End Select
ActiveCell.Validation.Delete
ActiveCell.Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Elenco
End If
SaltaCA:
If Not Application.Intersect(ActiveCell, Range(CheckAreaA)) Is Nothing Then
    If (Selection.Rows.Count + Selection.Columns.Count) > 2 Then Exit Sub
    If UR < 12 Then
        MsgBox "Formattare fino alla cella A12 inserendo Nr.Progetto"
        Exit Sub
    End If
    Application.EnableEvents = False
    Rows(UR - 1 & ":" & UR).Copy
    Rows(UR & ":" & UR + 1).Select
    ActiveSheet.PasteSpecial Format:=4, Link:=1, DisplayAsIcon:=False, IconFileName:=False
    Bordo
    Range("A" & UR + 1).Select
    Application.EnableEvents = True
End If
End Sub


Inoltre, aggiungi in un modulo questo codice (evita di cancellare il bordo in caso di doppia selezione della cella in A)
Codice: Seleziona tutto
Public UR As Integer
Sub Bordo()

    Range("A10:R" & UR + 1).Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlHairline
        .ColorIndex = 3
    End With
End Sub

Ciao

N.B. Il foglio deve avere almeno tre righe formattate e con i Numeri progetto inseriti (come nel tuo esempio)
EDIT ore 12:22 modificata macro - Aggiunto messaggio di avviso
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] Attivare menù quando clicco su una cella

Postdi Alea » 03/07/12 12:07

grazie Flash
è stra perfetta. non so come ringraziarti.

Ciao alla prossima
Alea
Utente Senior
 
Post: 145
Iscritto il: 24/07/06 14:12

Re: [EXCEL] Attivare menù quando clicco su una cella

Postdi Alea » 03/07/12 15:08

Ciao Flash,
purtroppo ho notato un piccolo difetto nella macro.
Praticamente ho portato la macro nel mio file originale dove avevo già compilato circa 200 righe e ho notato che essa funziona solo con la nuova riga che inserisco. Questo vuol dire che non posso andare a modificare i dati nelle 200 precedenti. C'è la possibilità di poter modificare anche il resto?

Ciao
Alea
Utente Senior
 
Post: 145
Iscritto il: 24/07/06 14:12

Re: [EXCEL] Attivare menù quando clicco su una cella

Postdi Alea » 10/07/12 15:45

Ciao Flash e scusa se ti rompo ancora.... non è che potesti dare un'occhiatina a quell'errore accennato nel post precedente?

Grazie
Alea
Utente Senior
 
Post: 145
Iscritto il: 24/07/06 14:12

Re: [EXCEL] Attivare menù quando clicco su una cella

Postdi Flash30005 » 10/07/12 16:37

Alea ha scritto:purtroppo ho notato un piccolo difetto nella macro.

Non è un "difetto" è ciò che avevi richiesto:
Alea ha scritto:Io avevo pensato di creare un'infinità di menu a tendina ma sinceramente non mi pare molto "bello" da vedere.

Per evitare questo, il menu a tendina lo si ha solo sul nuovo progetto, altrimenti si verifica quello che non ti pare molto "bello" da vedere.

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: [EXCEL] Attivare menù quando clicco su una cella

Postdi Alea » 10/07/12 16:45

Ok capito...

Grazie
Alea
Utente Senior
 
Post: 145
Iscritto il: 24/07/06 14:12


Torna a Applicazioni Office Windows


Topic correlati a "[EXCEL] Attivare menù quando clicco su una cella":


Chi c’è in linea

Visitano il forum: Ricky0185 e 45 ospiti