| | Post: 2 | Registrato il: 03/04/2020
| Età: 34 | Utente Junior | Excel 2006 | | OFFLINE |
|
06/04/2020 10:47 | |
Buongiorno a tutti,
vorrei proporvi questo quesito:
Nella colonna "A" ho la possibilità di inserire 6 valori (1 - OFFERTA, 2 - PROGETTAZIONE, 3 - PRODUZIONE, 4 - CONSUNTIVARE, 5 - CHIUSA, 6 - ANNULLATA) e vorrei che la colonna "C" si compilasse automaticamente con la data in cui viene inserito il valore "3 - PRODUZIONE" e che tale data non cambiasse più (a meno che il valore della cella "A" non venisse sostituito per poi ritornare a "3 - PRODUZIONE". In quel caso dovrebbe aggiornarsi.)
Le colonne "B" e "D" si compileranno automaticamente in base alla colonna "C" con semplici funzioni "SE":
Col. B = =SE($C1="";"";($C1-2))
Col. D = =SE($C1="";"";SE($C1
Purtroppo sono un vero e proprio neofita con il software VBA, ma vorrei imparare.
Ho seguito qualche video online..credo anche di averli capiti...ma purtroppo comincio a pensare che la mia idea sia troppo avanzata per le mia capacità.
Qualcuno può aiutarmi?
Grazie in anticipo.
Alex
P.s. allego file excel per comprendere meglio. 👍 |
|
| | Post: 2.634 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
06/04/2020 11:19 | |
ciao
nel vba del foglio1, prova:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("A2:A11")) Is Nothing Then
If Target.Value = "3 - PRODUZIONE" Then
Cells(Target.Row, 3) = Date
Else
Cells(Target.Row, 3) = ""
End If
End If
End Sub
saluti
Domenico
Win 10 - Excel 2016 |
| | Post: 2 | Registrato il: 03/04/2020
| Età: 34 | Utente Junior | Excel 2006 | | OFFLINE |
|
06/04/2020 11:37 | |
Ti ringrazio Domenico, ma adesso la situazione si fa interessante..
Forse prima non mi sono spiegato al meglio! 😅
Vorrei che quando nella colonna "A" compare "3 - PRODUZIONE" la colonna "C" si autocompili con la data, e fin qui ha risolto il mio problema al 100%, ma vorrei implementare il file in questo modo:
Dal momento che la colonna "C" si compila con la data, vorrei che la mantenese anche se il valore della colonna "A" passa a "4 - CONSUNTIVARE", "5 - CHIUSA", mentre nei casi di "1 - OFFERTA", "2 - PROGETTAZIONE" e "6 - ANNULLATA" la colonna "C" può rimanere vuota.
Grazie infinite!😁
Alex
|
| | Post: 2.636 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
06/04/2020 11:50 | |
ciao
utilizza un Select Case Target.value per le varie opzioni, es:
Select Case Target.value
case is ="1 - ...."
fai questo
case is ="2 - ...."
fai quest'altro
etc etc
saluti
Domenico
Win 10 - Excel 2016 |
| | Post: 3 | Registrato il: 03/04/2020
| Età: 34 | Utente Junior | Excel 2006 | | OFFLINE |
|
06/04/2020 12:13 | |
Grazie per la tempestiva risposta Domenico.
Purtroppo sono un po' "ignorante" e non conosco quel tipo di funzione.
Per gestire più casi "conosco" solo "if" e "elseif".
Ho provato a lavorare un po sul tuo codice ma non ho tirato fuori un ragno dal buco..😅
Grazie
Alex |
| | Post: 2.637 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
06/04/2020 12:50 | |
ciao
il Select Case (lo dice l'istruzione stessa) fa alcune cose sulla base del valore della selezione.
Ora il valore della tua selezione in colonna A si trova nella variabile Target, quindi come accennato, se tale valore è uguale a "1 - OFFERTA", allora la relativa cella in C dovrà essere vuota, se è uguale a "3 - PRODUZIONE", ci va la data, se è uguale a 4 - CONSUNTIVARE", oppure a "5 - CHIUSA" non fai nulla.
Provaci
https://docs.microsoft.com/it-it/dotnet/visual-basic/language-reference/statements/select-case-statement
saluti
[Modificato da dodo47 06/04/2020 12:51] Domenico
Win 10 - Excel 2016 |
| | Post: 4 | Registrato il: 03/04/2020
| Età: 34 | Utente Junior | Excel 2006 | | OFFLINE |
|
06/04/2020 13:40 | |
Provo a lavorarci.
Intanto grazie.
Alex |
| | Post: 3.843 | Registrato il: 03/04/2013
| Utente Master | Excel 2000 - 2013 | | OFFLINE | |
|
06/04/2020 15:45 | |
Buona giornata, @Gibbo989;
Excel 2006 sbaglio o si riferisce a MAC?
In ogni caso, dopo aver preso buona nota dei consigli di @dodo, potresti pensare a questa alternativa.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Dim NRc As Long
NRc = Range("A" & Rows.Count).End(xlUp).Row
If Not Intersect(Target, Range(Cells(2, 1), Cells(NRc, 1))) Is Nothing Then
Cells(Target.Row, 3).ClearContents
If Left(Target, 1) = 3 _
Or Left(Target, 1) = 4 _
Or Left(Target, 1) = 5 _
Then Cells(Target.Row, 3).Value = Date
End If
End Sub
Questa è solo un possibile Codice VBA; ce ne possono essere altri.
A disposizione.
Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
| | Post: 5 | Registrato il: 03/04/2020
| Età: 34 | Utente Junior | Excel 2006 | | OFFLINE |
|
07/04/2020 11:03 | |
Grazie per l'info @GiuseppeMN!
Utilizzo comunque un sistema operativo Windows Xp Professional.
Buona giornata.
Alex😁 |
|
|