IALweb Homepage
Forum Home Forum Home > MS Office > Microsoft Office > Microsoft Excel
  New Posts New Posts RSS Feed - Data odierna con 2 condizioni
  FAQ FAQ  Forum Search   Events   Register Register  Login Login


REGISTRATEVI su IALWeb forum!

Data odierna con 2 condizioni

 Post Reply Post Reply Page  12>
Author
Message
BG66 View Drop Down
Utente Avanzato
Utente Avanzato
Avatar

Joined: 20/Dic/2015
Location: Milano
Status: Offline
Points: 555
Post Options Post Options   Thanks (0) Thanks(0)   Quote BG66 Quote  Post ReplyReply Direct Link To This Post Topic: Data odierna con 2 condizioni
    Posted: 13/Feb/2018 at 06:21
Ciao,
con :

Sub Auto_Open()
    For Each cella In Range("A2:A100")
        If cella.Value <> "" Then
            Cells(cella.Row, 5) = Date
        End If
    Next
End Sub


controllo se nel range A c'è un campo vuoto e nel caso scrivo in E la data odierna.

Ma vorrei che all'apertura successiva non sovrascrivesse la data già presente nella colonna E.

Grazie in anticipo.
uploads/20915/RTestV0.rar


Edited by dodo47 - 14/Feb/2018 at 10:41
BG66
Office 2010
Back to Top
Sponsored Links


Back to Top
locate View Drop Down
Utente Senior
Utente Senior


Joined: 08/Ott/2009
Status: Offline
Points: 316
Post Options Post Options   Thanks (0) Thanks(0)   Quote locate Quote  Post ReplyReply Direct Link To This Post Posted: 13/Feb/2018 at 09:48
ciao

da un tuo dato
controllo se nel range A c'è un campo vuoto e nel caso scrivo in E la data odierna )
ma tu nella sub() controlli se la cella e' piena
(   If cella.Value <> "" Then )   corrisponde a diverso da vuoto , presente un valore in cella
penso che nel tuo caso devi inserire un ( = )
(   If cella.Value = "" Then ) corrisponde a nessun valore presente in cella,   in questo caso corrisponde alla tua descrizione

ciao da locate
excel 2007/13
Back to Top
dodo47 View Drop Down
Moderatore
Moderatore
Avatar

Joined: 29/Dic/2008
Location: Italy
Status: Offline
Points: 9922
Post Options Post Options   Thanks (0) Thanks(0)   Quote dodo47 Quote  Post ReplyReply Direct Link To This Post Posted: 13/Feb/2018 at 10:26
BG, ponendo che sia esatta la tua macro e che tu abbia sbagliato a scrivere "campo vuoto" anzichè "campo NON vuoto" (cosa che mi sembra più logica in quanto: che ci metti a fare una data in E se A è vuoto?)

Ciò premesso, e sempre che abbia intuito bene, dovrebbe essere:

 If cella.Value <> "" and cella.offset(,4)<>"" then

saluti


Edited by dodo47 - 13/Feb/2018 at 10:27
domenico
win 10- office 2010
Back to Top
BG66 View Drop Down
Utente Avanzato
Utente Avanzato
Avatar

Joined: 20/Dic/2015
Location: Milano
Status: Offline
Points: 555
Post Options Post Options   Thanks (0) Thanks(0)   Quote BG66 Quote  Post ReplyReply Direct Link To This Post Posted: 14/Feb/2018 at 04:14
Ciao,
confermo refuso nello scrivere.
Ma anche con il suggerimento di Domenico ( che come al solito ringrazio) non sono ancora fuori dal tunnel...
In pratica, vorrei:
1) verificare se in A c'è il nome dell'operatore -> se presente inserisco data odierna nella colonna E
2) nel rilanciare la macro all'apertura successiva (ovviamente in un giorno differente) verifico che il campo E sia compilato -> in caso positivo lascio la data presente e vado a scrivere solamente nei campi dove il dato NON è presente.
Pensavo di aver tradotto correttamente questo ragionamento nello script seguente, ma non è cosi!!:

Sub Auto_Open()
    For Each cella In Range("A2:A100")
        'If cella.Value <> "" Then
        If cella.Value <> "" And cella.Offset(, 5) <> "" Then
            Cells(cella.Row, 5) = Date
        End If
    Next
End Sub

Dove mi sono appantanato??Censored

Grazie per la pazienza.



Edited by dodo47 - 14/Feb/2018 at 10:40
BG66
Office 2010
Back to Top
Marius44 View Drop Down
Utente Senior
Utente Senior
Avatar

Joined: 02/Gen/2017
Location: Catania
Status: Offline
Points: 360
Post Options Post Options   Thanks (0) Thanks(0)   Quote Marius44 Quote  Post ReplyReply Direct Link To This Post Posted: 14/Feb/2018 at 07:44
Ciao Gene
quando ad una cella imponi la Funzione Date inserisci la data di sistema.
Se ho capito bene la richiesta dovresti:
a) assegnare ad una variabile o ad una costante la data di apertura fuori dal ciclo e fuori dall'IF
b) poi quando verifichi con l'IF se le celle sono vuote, se lo sono inserisci la variabile o la costante NON la funzione.

Ciao,
Mario
Back to Top
dodo47 View Drop Down
Moderatore
Moderatore
Avatar

Joined: 29/Dic/2008
Location: Italy
Status: Offline
Points: 9922
Post Options Post Options   Thanks (0) Thanks(0)   Quote dodo47 Quote  Post ReplyReply Direct Link To This Post Posted: 14/Feb/2018 at 11:02
Ciao BG, mio errore:

Sub Auto_Open()
    For Each cella In Range("A2:A10")
        'If cella.Value <> "" Then
        If cella.Value <> "" And cella.Offset(, 4) = "" Then
            Cells(cella.Row, 5) = Date
        End If
    Next
End Sub

saluti

per provarlo, al posto di date, metti Now() e da formato gg/mm/aaaa hh:mm:ss alla col E


Edited by dodo47 - 14/Feb/2018 at 11:05
domenico
win 10- office 2010
Back to Top
BG66 View Drop Down
Utente Avanzato
Utente Avanzato
Avatar

Joined: 20/Dic/2015
Location: Milano
Status: Offline
Points: 555
Post Options Post Options   Thanks (0) Thanks(0)   Quote BG66 Quote  Post ReplyReply Direct Link To This Post Posted: 14/Feb/2018 at 14:14
Scusatemi sto complicando l'acqua calda ma non ci arrivo.

@Marius
Ciao Mario,
troppo tecnico non ho capito  Cry

@Dodo
Ho un risultato anomalo.

Nel modulo ho inserito il codice:

Sub Auto_Open()
    For Each cella In Range("A2:A100") '<< corretto da A10 ad A100
        'If cella.Value <> "" Then
        If cella.Value <> "" And cella.Offset(, 4) = "" Then
            Cells(cella.Row, 5) = Now
        End If
    Next
End Sub

All'apertura non esegue l'operazione ma se l'avvio manualmente è ok.

Identico risultato facendo un giro più arzigogolato:

Sub Auto_Open()
    Call MettiData
End Sub



Sub MettiData()
    For Each cella In Range("A2:A100")
        'If cella.Value <> "" Then
        If cella.Value <> "" And cella.Offset(, 4) = "" Then
            Cells(cella.Row, 5) = Now
        End If
    Next
End Sub



Ovviamente la seconda prova è ridondante ma era un tentativo per evitare di farmi cazziare per aver dimenticato qualcosa.... Embarrassed

 uploads/20915/RTestV1.rar

Grazie
Gene


Edited by BG66 - 14/Feb/2018 at 14:20
BG66
Office 2010
Back to Top
Marius44 View Drop Down
Utente Senior
Utente Senior
Avatar

Joined: 02/Gen/2017
Location: Catania
Status: Offline
Points: 360
Post Options Post Options   Thanks (0) Thanks(0)   Quote Marius44 Quote  Post ReplyReply Direct Link To This Post Posted: 14/Feb/2018 at 14:35
Ciao Gene
Lascia perdere quello che ho detto stamattina (forse dormivo ancora) ma prendi per buono il suggerimento di Dodo (ciao Domenico) però con un'aggiunta (perchè TU l'hai dimenticate): le doppie parentesi.
Cioè
Cells(cella.Row, 5) = Now()

Ciao,
Mario


Edited by Marius44 - 14/Feb/2018 at 14:36
Back to Top
BG66 View Drop Down
Utente Avanzato
Utente Avanzato
Avatar

Joined: 20/Dic/2015
Location: Milano
Status: Offline
Points: 555
Post Options Post Options   Thanks (0) Thanks(0)   Quote BG66 Quote  Post ReplyReply Direct Link To This Post Posted: 14/Feb/2018 at 18:23
Ciao Mario,
l'anomalia persiste anche con le parentesi.
All'avvio la macro non lavora se forzata manualmente SI (???)

Gene
BG66
Office 2010
Back to Top
dodo47 View Drop Down
Moderatore
Moderatore
Avatar

Joined: 29/Dic/2008
Location: Italy
Status: Offline
Points: 9922
Post Options Post Options   Thanks (0) Thanks(0)   Quote dodo47 Quote  Post ReplyReply Direct Link To This Post Posted: 14/Feb/2018 at 18:33
Ciao
Nel vb sono ininfluenti le () dopo Now e Date, divesamente dalle formule (adesso() - oggi() ).

Che dire, non riscontro errori, appena aperto il tuo documento, sono stati aggiornati gli ultimi due valori che non avevano data.

Comunque, poichè sembra che l'autoOpen sia in disuso (es non funziona su win 365) e pertanto non più considerato negli aggiornamenti, fai così:
In This Workbook (questa cartella di lavoro) inserisci:
Private Sub Workbook_Open()
    For Each cella In Range("A2:A100")
        'If cella.Value <> "" Then
        If cella.Value <> "" And cella.Offset(, 4) = "" Then
            Cells(cella.Row, 5) = Now
        End If
    Next
End Sub

Procedura che Microsoft invita a seguire:
https://support.office.com/en-us/article/automatically-run-a-macro-when-opening-a-workbook-1e55959b-e077-4c88-a696-c3017600db44 

Spero così tu non abbia più problemi. Mal che vada c'è l'evento open del documento.

Solo una cosa: il tutto va bene se il documento è composto da 1 solo foglio, in caso contrario o selezioni prima il foglio oppure incrementi la macro con variabile che fa riferimento al foglio da aggiornare.

saluti


Edited by dodo47 - 14/Feb/2018 at 18:46
domenico
win 10- office 2010
Back to Top
 Post Reply Post Reply Page  12>
  Share Topic   

Forum Jump Forum Permissions View Drop Down

Forum Software by Web Wiz Forums® version 10.17
Copyright ©2001-2013 Web Wiz Ltd.

This page was generated in 0,063 seconds.