Login Registrati
Stai vedendo 20 articoli - dal 26 a 45 (di 45 totali)
  • Autore
    Articoli
  • #19889 Score: 0 | Risposta

    ABRAMO48
    Partecipante
      1 pt

      "... perché l'oggetto Selection è un oggetto speciale di tipo range di cui ne eredità metodi e proprietà (come Autofill) ..."

      VF ma dove posso leggere tutto questo? Un link ...

      #19890 Score: 0 | Risposta

      ABRAMO48
      Partecipante
        1 pt

        " ... perchè l'oggetto Selection è un oggetto speciale di tipo range di cui ne eredità metodi e proprietà (come Autofill)..."

        Ma dove è possibile leggere tutto questo? ...

        #19893 Score: 0 | Risposta

        vecchio frac
        Senior Moderator
          253 pts

          patel ha scritto:

          mi aspettavo un commento da parte tua

          LOL, hai ragione... eccolo qui:

          "bè, detto da patel, che storicamente e notoriamente non utilizza questa direttiva per pigrizia, trovo la precisazione estremamente pertinente e utile" 😀

          patel ha scritto:

          sei troppo impegnato ?

          Sì, non è che sono impegnato in VBA ultimamente, ma ho qualche problema in famiglia da risolvere. I miei genitori sono molto anziani con problemi di salute e hanno bisogno di presenza e cure in questo periodo, più del solito.

          #19894 Score: 0 | Risposta

          vecchio frac
          Senior Moderator
            253 pts

            ABRAMO48 ha scritto:

            dove posso leggere tutto questo? Un link

            Non sono in grado di darti "un link" in particolare. Quello che conosco l'ho appreso negli anni, confrontandomi in un forum specializzato all'inizio, dove ho trovato gente paziente che mi ha regalato la sapienza che mi mancava. Esperienza, libri, forum, poi certamente spulciare codice di qua e di là... questo è il mio bagaglio (e non sono certamente tra i più esperti, anzi ogni giorno imparo qualcosa). Un posto famoso da cui apprendere è certamente Stackoverflow. C'è dentro di tutto e bisogna saperlo leggere con un certo discrimine. Poi sai, la teoria è utile fino a un certo punto (le basi sono sempre importanti), poi però bisogna essere produttivi: e via a tentativi 🙂

            #19898 Score: 0 | Risposta

            ABRAMO48
            Partecipante
              1 pt

              "... dove ho trovato gente paziente che mi ha regalato la sapienza che mi mancava ..."

              eh! ... come sto facendo io con voi ... 

              Vi scrivo e correggo il programma in base alle Vostre risposte ...

              Il programma funziona, ma il codice fa schifo, come ha detto giustamente non so chi di voi.

              #19899 Score: 0 | Risposta

              vecchio frac
              Senior Moderator
                253 pts

                ABRAMO48 ha scritto:

                Il programma funziona, ma il codice fa schifo

                Il primo obiettivo di solito è produrre codice funzionante. Anche perchè si ha uno scopo da raggiungere e lo si vuole raggiungere in fretta. Poi, dopo un po' di tempo, giorni, settimane, si ritorna indietro e si cerca di ottimizzare, riscrivere, migliorare: è così che ci si acquista il proprio stile, e si trova la tecnica giusta. Nessun codice fa veramente schifo (a parte quello che produce il registratore di macro), tutto è certamente migliorabile, però riconosco la frase, è certamente mia 😛 

                Altro consiglio: farcisci il tuo codice di commenti. A cosa ti è servita una routine, perchè hai usato una funzione invece di un'altra, i dubbi che hai, i "todo" da fare in seguito, il significato di una proprietà, e descrivi le variabili in modo comprensibile... a distanza di mesi non ti ricorderai che la metà degli scopi iniziali credimi 🙂

                #19900 Score: 0 | Risposta

                patel
                Moderatore
                  51 pts

                  All'inizio si impara dal registratore di macro e quindi si produce codice schifoso, ma cercando in rete si possono trovare molti esempi ben fatti e piano piano si impara.

                  Come hai potuto vedere per chi ha voglia di imparare c'è piena disponibilità da parte di tutti, ma non capita spesso, i più vogliono la soluzione senza cercare neppure di capirla.

                  #19903 Score: 0 | Risposta

                  ABRAMO48
                  Partecipante
                    1 pt

                    Grazie Vecchio Frac e grazie Patel, condivido pienamente quello che avete scritto e vi ringrazio. E' vero siete molto disponibili (a volte mi sono detto "ora si stufano e non mi rispondono più ..." e invece ... eccoci ancora qui). Grazie, veramente l'aiuto del forum è insostituibile, perché è puntuale: su quell'istruzione lì, e la soluzione spesso getta una luce ben oltre il problema contingente. Certo purché dall'altra parte ci siano persone, veramente pazienti e veramente disponibili come voi.

                    Siete veramente impagabili! Grazie ancora, a prestissimo e ora continuiamo a lavorare ...

                     

                    #19905 Score: 0 | Risposta

                    ABRAMO48
                    Partecipante
                      1 pt

                      Allora, istruzione:

                          AA.Rows(RIG) = AA.Rows(411)

                      Mi copia (come immaginavo) solo i "valori" della riga 411, ma io voglio copiare "tutto": formati, valori, formule ...

                      Ho cercato nei manuali on-line, ma non ho trovato la risposta. Come posso fare?

                      e poi che differenza c'he fra usare Row e Rows?

                      Grazie carissimi!

                      #19906 Score: 0 | Risposta

                      patel
                      Moderatore
                        51 pts

                        La forma che hai usato serve soltanto per copiare i valori, per copiare tutto devi usare copy

                        AA.Rows(411).Copy AA.Rows(RIG)

                        Comunque copiare una intera riga lunghissima per copiare poche celle non credo sia molto consigliato

                        #19907 Score: 0 | Risposta

                        ABRAMO48
                        Partecipante
                          1 pt

                          ok ,funziona. E corretto cosi:

                          AA.Range("A411:EZ411").Copy AA.Range("A" & RIG & ":EZ" & RIG)

                          Grazie (anche di domenica sera ...)

                          avanti ...

                          #19908 Score: 0 | Risposta

                          vecchio frac
                          Senior Moderator
                            253 pts

                            ABRAMO48 ha scritto:

                            che differenza c'è fra usare Row e Rows?

                            Row è una proprietà di un oggetto Range e restituisce un intero lungo: il numero di riga di dove trovasi tale range: Cells(5, "A").Row = 5.

                            Rows è l'insieme delle righe di un oggetto range, a sua volta è un oggetto di tipo range: Range("A1:A10").Rows.Count = 10.

                            #19909 Score: 0 | Risposta

                            vecchio frac
                            Senior Moderator
                              253 pts

                              ABRAMO48 ha scritto:

                              E corretto cosi:

                              Sì, è corretto. Ma anche:

                              'ricopia A411:EZ411 a partire da A1
                              AA.Range("A411:EZ411").Copy AA.Range("A1")

                              Cioè, senza preoccuparti di specificare la riga di destinazione (non ti serve RIG). Naturalmente potresti sovrascrivere qualcosa di esistente, perciò occhio a copiare 🙂

                              #19910 Score: 0 | Risposta

                              ABRAMO48
                              Partecipante
                                1 pt

                                ok, capito tutto e applicato.

                                Ora ho questa matassa, indecente, di istruzioni:

                                Windows("ORDINE.xls").Activate
                                    Sheets("Foglio1").Select
                                    ActiveWorkbook.SaveAs Filename:= _
                                        PERCORSOX & "ORDINE_PROG.xls" _
                                        , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
                                        ReadOnlyRecommended:=False, CreateBackup:=False
                                    Windows("ORDINE_PROG.xls").Activate
                                    ActiveWindow.Close savechanges:=False

                                la semplificherei così:

                                 Workbooks("ORDINE.xls").SaveAs Filename:= _
                                        PERCORSOX & "ORDINE_PROG.xls" _
                                        , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
                                        ReadOnlyRecommended:=False, CreateBackup:=False
                                    Workbooks("ORDINE_PROG.xls").Close savechanges:=False

                                Ma tutto quello che il registratore ha messo dopo SaveAs Filename serve tutto?

                                 

                                #19915 Score: 0 | Risposta

                                patel
                                Moderatore
                                  51 pts

                                  Tutto ciò che non è valorizzato lo puoi eliminare

                                  #19916 Score: 0 | Risposta

                                  Luca73
                                  Partecipante
                                    56 pts

                                    Eh si Patel, VF è distratto o impegnato gli è scappato anche un

                                     a spendere qualche micron per convertire.

                                    Mischiando tempo con lunghezza....

                                    Ma dai .... non è da te , il maestro....  

                                    Ciao a tutti Luca

                                    #19919 Score: 0 | Risposta

                                    vecchio frac
                                    Senior Moderator
                                      253 pts

                                      Luca73 ha scritto:

                                      Mischiando tempo con lunghezza

                                      Leggasi microsecondo. Comunque dai, il tempo e lo spazio sono legati, o no? 

                                      Del resto 30 cm sono più o meno un nanosecondo luce (1 miliardesimo di secondo). A me piace molto l'immagine di quel tizio che girava con una fettuccina di trenta cm in tasca mostrandola per far vedere di tenere in mano un nanosecondo   

                                      #19936 Score: 0 | Risposta

                                      ABRAMO48
                                      Partecipante
                                        1 pt
                                           AA.Range("EA6:EA7") = AA.Range("M6:M7").Value

                                        in M6 e in M7 ci sono due date. Bene.

                                        Dopo l'istruzione, in EA6 e in EA7 ci sono sì le due date di M6 e M7, ma con il GG e il MM scambiati.

                                        ???

                                        Sembra, che spezzando l'istruzione in due istruzioni, una per EA6/M6 e l'atra per EA7/M7 funzioni tutto per bene.

                                        ???

                                        Avete idea perché possa succedere tutto questo?

                                         

                                         

                                         

                                        #19937 Score: 0 | Risposta

                                        vecchio frac
                                        Senior Moderator
                                          253 pts

                                          Benvenuto nel magico mondo delle date di Excel 🙂

                                          E' un mondo magico perchè è sempre una sorpresa e non puoi prevedere che risultato daranno le istruzioni che manipolano le date... il formato predefinito è quello americano (mm-dd-yyyy) ma se Excel è in italiano cerca di prendere le impostazioni predefinite per la localizzazione (dd-mm-yyyy). Solo che in ambito VBA la priorità è del formato americano, quindi ogni tanto, anche con le istruzioni di conversione, saltano fuori queste cose.

                                          Le celle sono formattate come data? hai messo un formato data normale o personalizzato? comunque ho fatto testè una prova con l'istruzione che hai messo tu e a me funziona correttamente, cioè non scambia giorni e mesi per tutte le celle interessate   

                                          #19938 Score: 0 | Risposta

                                          ABRAMO48
                                          Partecipante
                                            1 pt

                                            Incredibile!

                                            Se aggiungi poi che io programmo in excel su un computer APPLE (dove il problema suddetto non si verifica) e poi trasferisco il progetto su un computer Windows (dove si verifica la disfunzione e già le date, che in origine sono GG/MM/AA diventano, ma non sempre, GG/MM/AAAA), non manca proprio più niente ...

                                          Login Registrati
                                          Stai vedendo 20 articoli - dal 26 a 45 (di 45 totali)
                                          Rispondi a: With – End with
                                          Gli allegati sono permessi solo ad utenti REGISTRATI
                                          Le tue informazioni: