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

Codici VBA e avvisi pop up

Ultimo Aggiornamento: 03/05/2021 10:21
Post: 1
Registrato il: 19/04/2021
Età: 38
Utente Junior
2019
OFFLINE
19/04/2021 22:31

Salve, sono nuovo del forum e soprattutto sono novello nell'uso VBA
Spiego il mio problema: ho un file con più fogli di lavoro, alcuni di questi fogli contengono date. Mi serve che se sono presenti date di oggi, arrivi un avviso. Ora, sono riuscito a costruire un codice per un foglio e funziona.
Il problema ora è che mi serve lo stesso meccanismo anche per un altro foglio dello stesso file: cioè che arrivi un avviso (con contenuto messaggio diverso) anche se in questo secondo foglio sono presenti date di oggi.

Non so come si possano "unire" le due cose
Help

Posto i due codici "gemelli" che ho fatto
Post: 4
Registrato il: 19/04/2021
Età: 38
Utente Junior
2019
OFFLINE
19/04/2021 22:37

Private Sub Workbook_Open()
Dim rg As Range
Dim c As Range
Dim ur As Integer
Dim uc As Integer
Dim nomefoglio As String
Dim trov As Boolean

nomefoglio = ActiveSheet.Name
Application.ScreenUpdating = False
Sheets("SCADENZE").Activate
ur = Sheets("SCADENZE").Range("D65000").End(xlUp).Row
uc = Sheets("SCADENZE").Cells(11, Columns.Count).End(xlToLeft).Column
Set rg = Sheets("scadenze").Range(Cells(11, 7), Cells(ur, uc))
trov = False
For Each c In rg
    If IsDate(c) Then
        If c = Date Then
            trov = True
            Exit For
        End If
    End If
Next
If trov = True Then
    Sheets(nomefoglio).Select
    MsgBox "Ci sono contratti in scadenza"
End If
Application.ScreenUpdating = True
End Sub
[Modificato da by sal 20/04/2021 07:45]
Post: 5
Registrato il: 19/04/2021
Età: 38
Utente Junior
2019
OFFLINE
19/04/2021 22:38

Private Sub Workbook_Open()
Dim rg As Range
Dim c As Range
Dim ur As Integer
Dim uc As Integer
Dim nomefoglio As String
Dim trov As Boolean

nomefoglio = ActiveSheet.Name
Application.ScreenUpdating = False
Sheets("COLLOQUI").Activate
ur = Sheets("COLLOQUI").Range("D65000").End(xlUp).Row
uc = Sheets("COLLOQUI").Cells(11, Columns.Count).End(xlToLeft).Column
Set rg = Sheets("COLLLOQUI").Range(Cells(11, 7), Cells(ur, uc))
trov = False
For Each c In rg
    If IsDate(c) Then
        If c = Date Then
            trov = True
            Exit For
        End If
    End If
Next
If trov = True Then
    Sheets(nomefoglio).Select
    MsgBox "Ci sono COLLOQUI DA FARE"
End If
Application.ScreenUpdating = True
End Sub
[Modificato da by sal 20/04/2021 07:46]
Post: 1.382
Registrato il: 27/06/2011
Utente Veteran
excel 2007
OFFLINE
20/04/2021 10:38

ciao Giu,
non hai allegato un file di esempio ed a colpo d'occhio i codici mi sembrano corretti a parte quello del foglio COLLOQUI
(vedi nota di seguito) e qualche istruzione superflua, quindi dovrai fare tu le modifiche necessarie [SM=g27811]


usa Option Explicit in testa all'evento Workbook_Open, per evitare proprio quel tipo di errore

duplica le variabili per ogni foglio che dovrai processare:
esempio
dim rg ' per il foglio COLLOQUI (ricorda che si scrive con solo 2 "L")
dim rg1 ' per il foglio SCADENZE
dim rg2... dim rg3... e così via per OGNI variabile e per OGNI foglio

nell'evento Workbook_Open ed uno dopo l'altro,
crea un ciclo For Each per ogni foglio, facendo attenzione ad imputare le sue variabili corrette e relativo messaggio

ciao
Frank
[Modificato da tanimon 20/04/2021 11:05]







Stretta la foglia, larga la via, dite la vostra che ho detto la mia.
Excel 2007 forse anche 2013 ... 2021 ... 365 e future...
Post: 6
Registrato il: 19/04/2021
Età: 38
Utente Junior
2019
OFFLINE
23/04/2021 22:21

Anzitutto grazie per la risposta
Purtroppo sono alle prime armi di VBA quindi non ho ben compreso il da farsi...ho provato con la duplicazione delle variabili ma ho fatto un disastro
Non sono capace di andare oltre [SM=g27819]
Singolarmente riesco a farle funzionare ma nel metterle insieme mi esce fuori un disastro

Posto un file esempio
Post: 1.386
Registrato il: 27/06/2011
Utente Veteran
excel 2007
OFFLINE
23/04/2021 22:49

Re:
Giu Pe (vPLv210419), 19/04/2021 22:31:

Salve, sono nuovo del forum e soprattutto sono novello nell'uso VBA


Posto i due codici "gemelli" che ho fatto






sicuro di averli fatti tu?

a me sembra ti siano stati passati da
https://www.forumexcel.it/forum/threads/avviso-pop-up-alla-data-specifica.48206/

in effetti erano un pò "elaborati" per essere fatti da un "novello nell'uso di vba"


Saluti.
Frank







Stretta la foglia, larga la via, dite la vostra che ho detto la mia.
Excel 2007 forse anche 2013 ... 2021 ... 365 e future...
23/04/2021 23:50

In base a questo allegato, valido solo se le date sono in formatto GG/MM/AAAA e non gg/mese
Cancella quella scritta e metti questa
Option Explicit
Private Sub Workbook_Open()
Dim Ur As Long, r As Object, rig As Long
Ur = Sheets("colloqui").Range("A" & Rows.Count).End(xlUp).Row
Sheets("colloqui").Columns("a:a").AutoFit
Set r = Sheets("colloqui").Range("A1:A" & Ur).Find(Date, LookIn:=xlValues, LookAt:=xlWhole)
    If Not r Is Nothing Then
        rig = r.Row
        Sheets("colloqui").Activate
        Cells(rig, 1).Activate
        MsgBox "Ci sono COLLOQUI DA FARE, in riga " & rig
    End If
Ur = Sheets("Scadenze").Range("A" & Rows.Count).End(xlUp).Row
Sheets("Scadenze").Columns("a:a").AutoFit
Set r = Sheets("Scadenze").Range("A1:A" & Ur).Find(Date, LookIn:=xlValues, LookAt:=xlWhole)
    If Not r Is Nothing Then
        rig = r.Row
        Sheets("Scadenze").Activate
        Cells(rig, 1).Activate
        MsgBox "Ci sono contratti in scadenza, in riga " & rig
    End If
Set r = Nothing
End Sub
Post: 7
Registrato il: 19/04/2021
Età: 38
Utente Junior
2019
OFFLINE
24/04/2021 21:25

Re: Ti ringrazio
ABCDEF@Excel, 23/04/2021 23:50:

In base a questo allegato, valido solo se le date sono in formatto GG/MM/AAAA e non gg/mese
[Modificato da Giu Pe 24/04/2021 21:26]
Post: 1
Registrato il: 04/05/2010
Città: NOVELLARA
Età: 57
Utente Junior
2016
OFFLINE
01/05/2021 15:43

Info su file
Scusate se mi intrufolo in questo post ma questo file mi potrebbe essere utile però avrei bisogno di visualizzare invece che solo una riga in scadenza tutte le righe scadute o antecedenti alla data attuale ho provato a are delle modifiche ma non mi raccapezzo
grazie in anticipo a chi mi aiuterà
03/05/2021 10:21

Suggerisco di aprire un nuovo Post e di spiegare bene quello che desideri.

Ps. Ripensando al post precedente (in base alle informazioni fornite), mi sono chiesto cosa serve il VBA?
Non sarebbe meglio usare una FC per colorare le date nelle celle...???
[Modificato da ABCDEF@Excel 03/05/2021 10:22]
Vota: 15MediaObject5,00210 2
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 04:00. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com