Sviluppare funzionalita su Microsoft Office con VBA Convertire in MAIUSCOLO il valore delle celle usate in una colonna

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

    ABRAMO48
    Partecipante
      1 pt

      Buongiorno carissimi,

      non riesco a trovare una "buona" soluzione al problema in oggetto.

      Avevo trovato questa risposta nel Web:

      sub prova()
      Dim cell As Range
      For Each cell In UsedRange.Columns("D")
      If Not IsEmpty(cell.Value) And IsText(cell.Value) Then
          cell.Value = UCase(cell.Value)
      End If
      Next cell
      End Sub
      Function IsText(cellValue As Variant) As Boolean
          IsText = VarType(cellValue) = vbString
      End Function

      ma sembra non funzioni ...

      Percè? Avete un altro suggerimento? Occorre per forza un ciclo? Ma un sistema tipo:

      OO.UsedRange.Columns("D").Value = UCase(OO.UsedRange.Columns("D").Value)

      Non va bene?

      Grazie carissimi!

       

      #51610 Score: 0 | Risposta

      vecchio frac
      Senior Moderator
        272 pts

        ABRAMO48 ha scritto:

        Percè? Avete un altro suggerimento? Occorre per forza un ciclo? Ma un sistema tipo:

         

        Prova questo:

        ' converte il range A1:E1 in maiuscolo
        [A1:E1] = [INDEX(UPPER(A1:E1),)]
        #51611 Score: 0 | Risposta

        scossa
        Partecipante
          37 pts

          ABRAMO48 ha scritto:

          If Not IsEmpty(cell.Value) And IsText(cell.Value) Then

          che senso ha scrivere una function solo per utilizzare una function?

          If Not IsEmpty(cell.Value) And VarType(cell.Value) = vbString Then

           P.S.: nella tua function manca il punto in tra cell e Value (cellValue)

          vecchio frac ha scritto:

          [A1:E1] = ......

          Ahi, ahi hiai .... cosa vedono i miei stanchi occhi ....  "tu quoque, Brute, fili mi!"    

          #51612 Score: 0 | Risposta

          vecchio frac
          Senior Moderator
            272 pts

            scossa ha scritto:

            cosa vedono i miei stanchi occhi

            #51613 Score: 0 | Risposta

            ABRAMO48
            Partecipante
              1 pt

               

              [A1:E1] = [INDEX(UPPER(A1:E1),)]

              Sto cercando di capire come funziona INDEX, poi UPPER o UCase?, poi, senza parentesi quadre mi da errore ("prevista espressione")

              Sub E_CAPS_ORDINE()
                  Set MM = Workbooks("LOGISTA_MACRO.xls").Worksheets("MACRO")
                  Set OO = Workbooks("ORDINE.xls").Worksheets("Foglio1")
                  
                  OO.Range("D1:D2") = INDEX(OO.Range("D1:D2"), )
                 
              End Sub

              Con le parentesi quadre in D1 e D2 trovo  #NOME?

               OO.Range("D1:D2") = [INDEX(OO.Range("D1:D2"), )]

              ho visto qualcosa qui:

              https://stackoverflow.com/questions/16289540/excel-vba-code-to-upper-case-all-cells

              Ma qual'è l'uso e il significato delle parentesi quadre in VBA [o un indicazione dove andarlo a leggere]

              #51614 Score: 0 | Risposta

              scossa
              Partecipante
                37 pts

                ABRAMO48 ha scritto:

                Ma qual'è l'uso e il significato delle parentesi quadre in VBA [o un indicazione dove andarlo a leggere]

                Come ho già scritto altre volte, sono contro la scelta di usare le parentesi quadre per riferirsi ad un range di celle; la stessa Microsoft lo sconsiglia:

                "In the Microsoft Excel Visual Basic Programming System, Applications Edition (Visual Basic), you can use square bracket notation in some
                instances as an alternative to tunneling. For example, you could use [A1] instead of Range("A1") or [Sheet1!A1] instead of Sheets("Sheet1").Range("A1").
                Using this abbreviated notation may take less time to enter as part of your procedure, but it takes longer to evaluate these statements at run-time.
                In addition, it is less flexible since you can't use variable names inside the square brackets."

                Qui c'è la URL dell'articolo completo: https://www.betaarchive.com/wiki/index.php?title=Microsoft_KB_Archive/104502

                Normalmente le parentesi quadre si usano per riferirsi ai named range ovvero i nomi dati a una cella o un gruppo di celle:

                se alle celle A2:B4 assegnamo il name "Dati" allora è corretto usare Dati nelle formule e  [Dati] nel VBA.

                #51615 Score: 0 | Risposta

                Oscar
                Partecipante
                  45 pts

                  ABRAMO48 ha scritto:

                  Con le parentesi quadre in D1 e D2 trovo  #NOME?

                   OO.Range("D1:D2") = [INDEX(OO.Range("D1:D2"), )]

                  OO.Range("D1:D2") = [INDEX(UPPER(D1:D2), )]

                  #51616 Score: 0 | Risposta

                  vecchio frac
                  Senior Moderator
                    272 pts

                    scossa ha scritto:

                    Come ho già scritto altre volte, sono contro la scelta di usare le parentesi quadre

                    Lo so, infatti non uso mai questa notazione. Il mio era solo un esempio della possibilita' dato che la richiesta era di avere un altro suggerimento da provare. Certo che se invece di testare l'esempio fornito ci inventiamo di togliere le quadre, o se ci ficchiamo in mezzo dei Range senza sapere cosa si fa, allora e' meglio non considerare l'esempio.

                    #51617 Score: 0 | Risposta

                    ABRAMO48
                    Partecipante
                      1 pt

                      Ho visto l'esempio, interessante di Vecchio Frac, ho cercato anche come funziona Index e più o meno ho capito ...

                      Però non sono riuscito a farlo funzionare e mi sono arreso (ma dava sempre un errore di incongruenza di dati, mi sembra) allora mi sono rassegnato al ciclo:

                      Dim XCEL As Object
                      For Each XCEL In OO.Range("D1:D" & MM.Range("H24")).Cells
                          XCEL = UCase(XCEL)
                      Next XCEL

                      MM.Range("H24") contiene il numero di righe di OO.

                      Ok, grazie ragazzi, siete sempre uno spunto stimolante di approfondimento ... Buona serata.

                       

                      #51618 Score: 0 | Risposta

                      scossa
                      Partecipante
                        37 pts

                        vecchio frac ha scritto:

                        Lo so, infatti non uso mai questa notazione.

                        #51626 Score: 0 | Risposta

                        vecchio frac
                        Senior Moderator
                          272 pts

                          scossa ha scritto:

                          vecchio frac ha scritto:

                          Lo so, infatti non uso mai questa notazione.

                          ...tranne quando ho fretta   

                          #51629 Score: 0 | Risposta

                          scossa
                          Partecipante
                            37 pts

                            vecchio frac ha scritto:

                            ...tranne quando ho fretta

                            "Haste makes waste"  

                            #52989 Score: 0 | Risposta

                            LukeReds
                            Partecipante
                              19 pts

                              ciao,

                               per trasformare in maiuscolo D1:Dn senza cicli

                               

                              Sub MaiuscInD()
                              Dim r As Integer
                              r = Range("D" & Rows.Count).End(xlUp).Row
                              With Range("D1:D" & r)
                                  .Value = Evaluate("UPPER(" & .Address & ")")
                              End With
                              End Sub
                            Login Registrati
                            Stai vedendo 13 articoli - dal 1 a 13 (di 13 totali)
                            Rispondi a: Convertire in MAIUSCOLO il valore delle celle usate in una colonna
                            Gli allegati sono permessi solo ad utenti REGISTRATI
                            Le tue informazioni: