› Sviluppare funzionalita su Microsoft Office con VBA › Convertire in MAIUSCOLO il valore delle celle usate in una colonna
-
AutoreArticoli
-
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 Functionma 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!
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),)]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 ThenP.S.: nella tua function manca il punto in tra cell e Value (cellValue)
[A1:E1] = ......
Ahi, ahi hiai .... cosa vedono i miei stanchi occhi .... "tu quoque, Brute, fili mi!"
cosa vedono i miei stanchi occhi

[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 SubCon 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]
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
Datinelle formule e[Dati]nel VBA.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), )]
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.
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 XCELMM.Range("H24") contiene il numero di righe di OO.
Ok, grazie ragazzi, siete sempre uno spunto stimolante di approfondimento ... Buona serata.
Lo so, infatti non uso mai questa notazione.

Lo so, infatti non uso mai questa notazione.

...tranne quando ho fretta
...tranne quando ho fretta
"Haste makes waste"
-
AutoreArticoli
