› Sviluppare funzionalita su Microsoft Office con VBA › macro che al variare di un contenuto in una colonna, richiama una macro.
-
AutoreArticoli
-
Salve a tutti,
vorrei che quando compare una stringa in una delle celle della colonna (I5:I18), si agganci ad una macro che mi segnali con una txt box che nel range di celle (B6:H6) posso inserire solo un valore in tutto il range di celle, e così via (stringa nella cella I6, messaggio nel range di celle (B7:H7).
In allegato il file di excel.
Grazie.
Massimiliano
Allegati:
You must be logged in to view attached files.Non mi è molto chiaro il tuo obiettivo, inoltre non hai postato i tuoi tentativi di risolvere, è necessario scaricare il file per vederli
Ciao Patel,
cerco di spiegarti meglio, se nell'intervallo di celle (I5:I18) compare una stringa, mi deve comparire un Msg. che mi avverte che nelle celle da D6 a H6 posso inserire una sola valore per tutte le celle (che poi sarebbe il nome di un trasportatore, che si seleziona dal menu' a tendina).
Private Sub Worksheet_Change(ByVal Target As Range) Dim KeyCells As Range ' The variable KeyCells contains the cells that will ' cause an alert when they are changed. Set KeyCells = Range("I5:I18") If Not Application.Intersect(KeyCells, Range(Target.Address)) _ Is Nothing Then ' Display a message when one of the designated cells has been ' changed. ' Place your code here. pIPPO = MsgBox("E' POSSIBILE INSERIRE UNA SOLA PRENOTAZIONE!Vuoi proseguire ?", vbYesNoCancel) End If End SubChe significa "se nell'intervallo di celle (I5:I18) compare una stringa", come compare ? per magia ?
Buongiorno,
no con l'istruzione SE: =SE(J5>$I$2;" MEZZO IN SOSTA 1!";" ")......
Buona giornata, @tempusfugit;
mi sembra che il Codice VBA che hai postato faccia ciò che chiedi.
Volendo sarebbe opportuno definire la Variabile "PIPPO" come "String"; ma, se nel Codice VBA non imponi "Option Explicit" può andare bene così.Qual è il tuo dubbio?
Giuseppe
Buongiorno Giuseppe,
no purtroppo se scrivo nella cella si attiva il messaggio, la routine non effettua un controllo se nella riga è presente una stringa ed inoltre il messaggio mi appare anche nelle righe successive anche se non si è verificato l'evento.
Buona giornata, @tempusfugit;
non vorrei sbagliarmi ma credo che le Formule in Colonna "I", essendo stiche, non generino alcun Evento.
A mio modesto parere il controllo andrebbe esguito sulla Colonna "J"; vedi immagine in allegato.
Se ritieni di poter accettare questa modifica, assieme, affontiamo:
... la routine non effettua un controllo se nella riga è presente una stringa ed inoltre il messaggio mi appare anche nelle righe successive anche se non si è verificato l'evento ...Giuseppe
Giuseppe, ti ringrazio, ma per forza di cose dobbiamo lavorare sulla colonna I5:I18, perchè se si verifica una determinata condizione: (tre celle già occupate sulla stessa riga per esempio nella riga A5:H5, nella cella I5 deve apparire il messaggio:" mezzo in sosta 1!"; cosa che già accade, il problema e che non riesco a far partire il messaggio con l'istruzione call e con: Private Sub Worksheet_Change(ByVal Target As Range)
Set Target = Sheets(“foglio1”) = Range("I5:I18").Worksheet_Change si attiva soltanto se sei tu a scrivere nelle celle, non intercetta modifiche tramite formula. Forse potresti provare con Sub Worksheet_Calculate() ma non so aiutarti su come usarlo
Buona giornata, @tempusfugit;
a proposito di:... Giuseppe, ti ringrazio, ma per forza di cose dobbiamo lavorare sulla colonna I5:I18, ...In questo caso temo di non poterti aiutare; anche pensando alla proposta di @patel, che saluto, "Worksheet_Calculate" temo si attiverebbe ad ogni modifica in qualunque Cella del Foglio di lavoro.
Buon Lavoro.
Giuseppe
Buona giornata, @tempusfugit;
consentimi un ripensamento, potremmo provare con "BeforeDoubleClick".Voglio dire l'Evento si attiverebbe con Doppio Click nel Range "I5:I18"
Cosa ne pensi?
Giuseppe
Allora Lavoriamo sulla colonna "J" range ("J5:J18"), se la singola cella contiene un valore uguale o maggiore di 3 in corrispondenza della colonna "B" mi vede apparire un messaggio. Il controllo é indivuale per ogni riga.
Buon pomeriggio, @tempusfugit;
per ottenere ciò che chiedi ho utilizzato alcune Celle d'appoggio, nei miei test le Celle "C5:C18", questo ti crea problemi?Giuseppe
Ciao Giuseppe,
dalla celle dopo la J puoi utilizzarle tutte!
Ciao Giuseppe,
dalla celle dopo la J puoi utilizzarle tutte!
Il cocetto che ho utilizzato é:
- Non ho utilizzato Celle d'appoggio
- Celle D5:H18 "Bloccate"
- Quando eseguo Doppio Click su una Cella J5:J18, le Celle D:H della Riga relativa vengono "Sbloccate"
- Variando il contenuto di una Cella D:H la Riga viene "Bloccata"Cosa ne pensi?
O meglio, Tu e @patel cosa ne pensate?Giuseppe
Giuseppe,
dai una occhiata al mio foglio e vedi come funziona ora e completo, io vorrei togliere la colonna "B" e sostituirla con un MsgBox e magari dove appara la scritta è possibile una sola prenotazione, sulla interna riga inserire un allert che mi dice che posso inserire una sola prenotazione e magari bloccare quando si seleziona una cella le altre si devono bloccare.
Grazie per l'aiuto.
Massimiliano
Allegati:
You must be logged in to view attached files.Buona sera, Massimiliano;
prima di avveturarmi nel tuo nuovo File ti chiedo la cortesia di dare uno sguardo al File in allegato sviluppato in base alla struttura precedente e, cortesemente, dirmi cosa ne pensi.Nel caso in cui la struttura sia compatibile con le tue necessità, assieme, possiamo cercare di adattare i due "Eventi" alla struttura del tuo nuovo File.
N.b. I valori delle Celle:
- J6
- J9
non sono coerenti con la tua richiesta e vanno modificati; in origine erano:
- J6=19
- J9=14
successivamente modificati rispettivamente in:
- J6=9
- J9=4A disposizione.
Buona serata.
Giuseppe
Allegati:
You must be logged in to view attached files.Solo ora mi sono accorto che il File "Test-pg.xlsm" non era protetto, mi scuso per il refuso e allego il File protetto.
Giuseppe
Allegati:
You must be logged in to view attached files.Giuseppe, ti ringrazio per il file di esempio, ma non trovo compatibilità con quello che cerco io, il mio file deve gestire una tabella con degli orari di ingresso, ogni ora possiamo far entrare al massimo due mezzi, se arrivano un terzo mezzo va in area di sosta (esempio: alle ore 5.00 AM entrano 3 mezzi 2 vanno al carico, mentre il terzo va in area di sosta e aspetta che si libera il primo operatore per caricare, quindi alle ore 6.00 AM, potrà entrare un solo mezzo, perchè con l'altro che è in sosta non possiamo caricare altri mezzi fino alle ore 7.00 AM.
Il file si sviluppa su due tabelle identiche perchè abbiamo due aree di carico con due operatori per ognuna, quindi ogni ora possiamo caricare massimo 4 mezzi e 2 vanno in sosta, nel menù ad elenco ci sono per ogni area di carico l'abbinamento esatto di ogni trasportatore.
Saluti,
Massimiliano
Buona giornata, Massimiliano;
la struttura proposta nel File "GeBi-1.xlsm" nel post #27124 è molto diversa dal File "GeBi.xlsm" inizialmente proposto nel post #27088.
Il mio File è stato sviluppato in base al tracciato e alle indicazioni dei tuoi post precedenti, se il concetto è cambiato andrebbero rivisti i due "Eventi":
- Worksheet_BeforeDoubleClick
e
- Worksheet_Change
adattandoli al nuovo tracciato.Se lo ritieni utile e opportuno potremmo ragionare assieme sulle modifiche da adottare; in questo caso credo che una chiacchierata in Skype potrebbe essere risolutiva con l'impegno formale di condividere in Forum eventuali sviluppi.
A disposizione.
Buon Lavoro.
Giuseppe
Buon pomeriggio a Tutti;
in ottemperanza all'impegno di condividere in Forum eventuali sviluppi, a beneficio degli Utenti interessanti, allego la bozza del File proposto a @tempusfugit il 07/08/2020 alle 17:22.
Molto brevemente, nel Foglio di lavoro "Base":
- Doppio Click su "Orario" sprotegge le Celle delle Colonne "C:I" relative alla Riga (Orario) selezionato.
- Dopo l'inserimento del Valore desiderato in una delle Colonne "C:I" le Celle vengono nuovamente bloccate.A disposizione per eventuali ulteriori spiegazioni.
GiuseppeAllegati:
You must be logged in to view attached files. -
AutoreArticoli
