Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Codice VBA che agisce su tutta la colonna

Ultimo Aggiornamento: 07/04/2020 11:03
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

Grazie Domenico
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😁
Vota: 15MediaObject5,0019 1
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 02:59. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com