Sviluppare funzionalita su Microsoft Office con VBA macro che al variare di un contenuto in una colonna, richiama una macro.

Login Registrati
Stai vedendo 23 articoli - dal 1 a 23 (di 23 totali)
  • Autore
    Articoli
  • #27088 Score: 0 | Risposta

    tempusfugit
    Partecipante

      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.
      #27093 Score: 0 | Risposta

      patel
      Moderatore
        51 pts

        Non mi è molto chiaro il tuo obiettivo, inoltre non hai postato i tuoi tentativi di risolvere, è necessario scaricare il file per vederli

        #27101 Score: 0 | Risposta

        tempusfugit
        Partecipante

          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 Sub
          #27102 Score: 0 | Risposta

          patel
          Moderatore
            51 pts

            Che significa "se nell'intervallo di celle (I5:I18) compare una stringa", come compare ? per magia ?

            #27103 Score: 0 | Risposta

            tempusfugit
            Partecipante

              Buongiorno,

              no con l'istruzione SE: =SE(J5>$I$2;" MEZZO IN SOSTA 1!";" ")......

              #27104 Score: 0 | Risposta

              GiuseppeMN
              Partecipante
                19 pts

                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

                #27105 Score: 0 | Risposta

                tempusfugit
                Partecipante

                  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.

                  #27106 Score: 1 | Risposta

                  GiuseppeMN
                  Partecipante
                    19 pts

                    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

                    #27107 Score: 0 | Risposta

                    tempusfugit
                    Partecipante

                      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").

                      #27108 Score: 0 | Risposta

                      patel
                      Moderatore
                        51 pts

                        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

                        #27109 Score: 0 | Risposta

                        GiuseppeMN
                        Partecipante
                          19 pts

                          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

                          #27110 Score: 0 | Risposta

                          GiuseppeMN
                          Partecipante
                            19 pts

                            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

                            #27111 Score: 0 | Risposta

                            tempusfugit
                            Partecipante

                              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. 

                              #27118 Score: 0 | Risposta

                              GiuseppeMN
                              Partecipante
                                19 pts

                                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

                                #27119 Score: 0 | Risposta

                                tempusfugit
                                Partecipante

                                  Ciao Giuseppe,

                                  dalla celle dopo la J puoi utilizzarle tutte!

                                  #27120 Score: 0 | Risposta

                                  tempusfugit
                                  Partecipante

                                    Ciao Giuseppe,

                                    dalla celle dopo la J puoi utilizzarle tutte!

                                    #27121 Score: 0 | Risposta

                                    GiuseppeMN
                                    Partecipante
                                      19 pts

                                      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

                                      #27124 Score: 0 | Risposta

                                      tempusfugit
                                      Partecipante

                                        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.
                                        #27126 Score: 0 | Risposta

                                        GiuseppeMN
                                        Partecipante
                                          19 pts

                                          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=4

                                          A disposizione.

                                          Buona serata.

                                          Giuseppe

                                          Allegati:
                                          You must be logged in to view attached files.
                                          #27128 Score: 0 | Risposta

                                          GiuseppeMN
                                          Partecipante
                                            19 pts

                                            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.
                                            #27130 Score: 0 | Risposta

                                            tempusfugit
                                            Partecipante

                                              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

                                              #27132 Score: 1 | Risposta

                                              GiuseppeMN
                                              Partecipante
                                                19 pts

                                                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

                                                #27221 Score: 0 | Risposta

                                                GiuseppeMN
                                                Partecipante
                                                  19 pts

                                                  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.
                                                  Giuseppe

                                                  Allegati:
                                                  You must be logged in to view attached files.
                                                Login Registrati
                                                Stai vedendo 23 articoli - dal 1 a 23 (di 23 totali)
                                                Rispondi a: macro che al variare di un contenuto in una colonna, richiama una macro.
                                                Gli allegati sono permessi solo ad utenti REGISTRATI
                                                Le tue informazioni: