Basta con queste Select, quando puoi indirizza direttamente la cella.
Esempio:
- Codice: Seleziona tutto
Sub Esempio11()
'A)
lAnno = Left(Cells(1, 14).Value, 4)
MsgBox "Mai fatto così caldo come nel " & lAnno
'Oppure B)
MsgBox "Mai fatto così caldo come nel " & Left(Cells(1, 14).Value, 4)
End Sub
Secondo esempio:
- Codice: Seleziona tutto
Sub Esempio2()
Dim ric
ric = Range("R1").FormulaR1C1 = "=LEFT(RC[-4],4)"
MsgBox "Mai fatto così caldo come nel " & [ric]
End Sub
Qui semplicemente RIC viene compilata col confronto Range("R1").FormulaR1C1 = "=LEFT(RC[-4],4)"; mentre tu volevi inserire la formula in R1, lasciare che excel calcolasse la formula (cioe' il contenuto di N1), per poi usarlo.
Avresti dovuto usare, ad esempio
- Codice: Seleziona tutto
Range("R1").FormulaR1C1 = "=LEFT(RC[-4],4)"
MsgBox "Mai fatto così caldo come nel " & [R1]
Oppure, senza mettere una formula in R1 che ti dia un valore preso da N1, fare come nell'esempio di prima:
- Codice: Seleziona tutto
MsgBox "Mai fatto così caldo come nel " & Left(Cells(1, 14).Value, 4)
Forse ti chiederai perche' uso Cells(Riga,Colonna) invece che Range. Ora la prima risposta potrebbe essere "Ci sono piu' modi per fare la stessa cosa"; invece in questo caso il motivo e' legato a cosa avevo suggerito nella prima risposta: ti calcoli la posizione di "Differenza" e poi usi quella posizione per finalizzare la posizione da leggere; in codice:
- Codice: Seleziona tutto
DiCol=Application.Match("Differenza",Range("A1:BB1"),False)
MsgBox "Mai fatto così caldo come nel " & Right(Cells(1,DiCol - X),4)
(con X in quel momento ignoto)
Vedo che hai preso l'abitudine a usare [ ]: raramente quel metodo si traduce in risparmio di codice, spesso e' causa di risultati inattesi; insomma torna a usare le vecchie, collaudate notazioni