Condividi:        

Inserimento parziale valore cella in MessageBox

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Inserimento parziale valore cella in MessageBox

Postdi Ricky0185 » 29/05/25 15:22

Buongiorno, con questa macro
Codice: Seleziona tutto
Sub Esempio ()
MsgBox "Mai fatto così caldo come nel " & Evaluate("Right(Q1,4)") 'oppure anche così
MsgBox "Mai fatto così caldo come nel " & [Right(Q1,4)]
End Sub
inserisco in un messaggio un riferimento agli ultimi 4 valori che si trovano nella cella Q1.
Immagine
Il messaggio è parecchio più lungo, inframmezzato varie volte da 2024 e/o 2025, cioè dalle ultime 4 lettere di Q1 e di P1, ai quali potrei arrivare col classico BB1.end(xltoleft).offset(etc).select, MA… sono due celle variabili che ora si trovano nella colonna P e Q ma che in giugno saranno nelle colonne Q ed R, e così via al passar dei mesi.
Come posso modificare nella macro il Right(Q1,4) inserendo al posto di Q1 il [BB1.End(xltoleft).offset(0,-2 o -3),4] ?
Ringrazio chi con questo caldo (Roma) mi suggerirà la soluzione.
R
Ricky0185
Utente Senior
 
Post: 410
Iscritto il: 10/12/19 20:38

Sponsor
 

Re: Inserimento parziale valore cella in MessageBox

Postdi Anthony47 » 29/05/25 17:12

Chissa' quale e' la colonna Q nel layout che hai pubblicato...
Comunque puoi trovare la colonna che contiene "Differenza" usando
Codice: Seleziona tutto
dim DiCol as Long
'..
'..
DiCol=Application.Match("Differenza",Range("A1:BB1"),False)


Poi userai qualcosa come
Codice: Seleziona tutto
MsgBox "Mai fatto così caldo come nel " & Right(Cells(1,DiCol - X),4)

Userai per X il valore 1 se la cella che ti interessa e' quella appena a sinistra di Differenza, oppure il valore opportuno.

Ma sei sicuro che quel "2024" o quel numero di colonna non l'hai calcolato gia' altre volte all'interno del tuo codice?
Avatar utente
Anthony47
Moderatore
 
Post: 19624
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Inserimento parziale valore cella in MessageBox

Postdi Ricky0185 » 29/05/25 20:41

Si, è stato utilizzato nella tua macro suggerita per calcolare i Totali ad oggi dei due anni e relativa differenza
Codice: Seleziona tutto
mySplit = Split(ActiveCell.Value & "-0-0", "-", , vbTextCompare)
ActiveCell.Offset(0, 4).Value = Split(range("l1").Value & "-0-0", "-", , vbTextCompare)(0) 'seconda colonna file dx
ActiveCell.Offset(0, 3).Value = Split(range("C1").Value & "-0-0", "-", , vbTextCompare)(0) 'prima colonna file sx
ma non potevo inserire nel messaggio quel po po di istruzioni. Con l'Evaluate o con le parentesi quadre invece la trasformazione è immediata. Le due colonne interessate sono quelle dei Totali 2024 e 2025.
Vedo di inserire la tua soluzione nel messaggio, che non è altro che una spiegazione del significato delle freccette rosse e verdi che, seppur intuitivo, per molti/e è indecifrabile, "Ma cosa sono quelle freccette colorate ?".
Un saluto e ringraziamento
R
Ricky0185
Utente Senior
 
Post: 410
Iscritto il: 10/12/19 20:38

Re: Inserimento parziale valore cella in MessageBox

Postdi Anthony47 » 30/05/25 08:33

ma non potevo inserire nel messaggio quel po po di istruzioni
Per questo (e tante altre cose) sono state inventate le Variabili, in cui puoi memorizzare un qualcosa che poi riusi tutte le volte che ti serve. Tipo:
Codice: Seleziona tutto
Dim lAnno as string
'..
'..
lAnno = Le-istruzioni-che servono
'..
'..
MsgBox "Mai fatto così caldo come nel " & lAnno
Avatar utente
Anthony47
Moderatore
 
Post: 19624
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Inserimento parziale valore cella in MessageBox

Postdi Ricky0185 » 30/05/25 12:11

Questi erano i vari tentativi infruttuosi e per un motivo od altro non risolvevano il problema
Codice: Seleziona tutto
Sub Esempio1()
 range("R1").Offset(0, -4).Select
MsgBox "Mai fatto così caldo come nel " & [Selection]
End Sub ‘questo non sono riuscito a fargli digerire nella formula il 4 – le prime 4 lettere

Sub Esempio2()
Dim ric
ric = range("R1").FormulaR1C1 = "=LEFT(RC[-4],4)"
MsgBox "Mai fatto così caldo come nel  " & [ric]
End Sub ‘e questo mi da Falso. Forse per lui non è poi così caldo

Immagine
Ciao
Ricky0185
Utente Senior
 
Post: 410
Iscritto il: 10/12/19 20:38

Re: Inserimento parziale valore cella in MessageBox

Postdi Anthony47 » 30/05/25 15:09

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
Avatar utente
Anthony47
Moderatore
 
Post: 19624
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Inserimento parziale valore cella in MessageBox

Postdi Ricky0185 » 30/05/25 16:22

Quanta carne al fuoco !!! Stasera con calma cuocio una alla volta le soluzioni da te prospettate, anche se quella con l'X è perfetta.
Buona serata
R
Ricky0185
Utente Senior
 
Post: 410
Iscritto il: 10/12/19 20:38


Torna a Applicazioni Office Windows


Topic correlati a "Inserimento parziale valore cella in MessageBox":


Chi c’è in linea

Visitano il forum: Nessuno e 19 ospiti