| | 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
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
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 | |
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 | |
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 | |
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] |
|
|