Newsgroup: it.comp.lang.visual-basic
Titolo: [VBA-EXCEL] Valore contenuto in cella

Provo a chiedere anche a voi dove un'inutile googolata...
La cosa che devo fare è semplice e cioè mettere in un foglio di
lavoro alcuni valori pescati da un altro (che è una file ascii che
faccio diventare io xls sempre con questa macro).
La difficoltà è che una volta che gira la macro per la 1 volta i
valori collegati NON devono cambiare se cambia l'origine...
In pratica:
se nella cella A1 se ci faccio finire tramite macro "=pippo.asc!R1C12"
quando mi cambia pippo mi cambia il numero che leggo... io invece
dovrei fare più o meno come fa l'incolla speciale e quindi nella cella
A1 dovrebbe finirci direttamente un numero (=12) che non cambia più...
Ho visto che l'incolla speciale da macro sarebbe usabile ma dato che
devo importare circa 40 valori presi sparsi dal file .asc mi verrebbe
un casino usarlo... ci sono altri metodi?
Grazie,
Al3xI98O

 ha scritto nel messaggio 
news:1132419144.1...@g44g2000cwa.googlegroups.com...
Provo a chiedere anche a voi dove un'inutile googolata...
La cosa che devo fare è semplice e cioè mettere in un foglio di
lavoro alcuni valori pescati da un altro (che è una file ascii che
faccio diventare io xls sempre con questa macro).
La difficoltà è che una volta che gira la macro per la 1 volta i
valori collegati NON devono cambiare se cambia l'origine...
In pratica:
se nella cella A1 se ci faccio finire tramite macro "=pippo.asc!R1C12"
quando mi cambia pippo mi cambia il numero che leggo... io invece
dovrei fare più o meno come fa l'incolla speciale e quindi nella cella
A1 dovrebbe finirci direttamente un numero (=12) che non cambia più...
[cut]
Scusa, ma non sarebbe meglio suddividere la stringa  "=pippo.asc!R1C12"
in due ed aggiornare solo la parte iniziale (nella seconda mettere es. il 
12). Poi, sempre a livello codice, unire nuovamente le due stringhe se serve 
per la prosecuzione della macro.
Se non ho capito una mazza ti prego di spiegarmi meglio.

per la prosecuzione della macro.
Mmm... però anche così se cambia il file pippo.asc cambia il valore
della cella...
In pratica dovrei importare un'instantanea del file pippo.asc ad
adesso. Il file poi cambierà ma NON dovranno cambiare i valori
importati precedentemente.
Mi ci andrebbe qcosa tipo "=PRENDIVALORE(pippo.asc!R1C12)" e nella
cella ci dovrebbe così finire non la scritta "=pippo.asc!R1C12" ma il
numero presente adesso "35". Quando poi il 35 diventerà 40 nella mia
cella rimarrà il 35...
Spero di essermi spiegato...
Al3x

Alex1980 ha spiegato il 21/11/2005 :

Non puoi mettere il valore della cella in una variabile e poi il valore 
della variabile nella cella?
Alberto
-- 
Si è visto di meglio,
ma si è scopato di peggio,
qualche volta a pago
e non erano neanche sempre donne
[Paolo]

della variabile nella cella?
Cavolo non ci avevo pensato!
In effetti dovrebbe poter funzionare in effetti... Ci provo e vi
aggiorno!
Grazie,
Al3x

In pratica dovrei importare un'instantanea del file pippo.asc ad
adesso. Il file poi cambierà ma NON dovranno cambiare i valori
importati precedentemente.
Mi ci andrebbe qcosa tipo "=PRENDIVALORE(pippo.asc!R1C12)" e nella
cella ci dovrebbe così finire non la scritta "=pippo.asc!R1C12" ma il
numero presente adesso "35". Quando poi il 35 diventerà 40 nella mia
cella rimarrà il 35...
Spero di essermi spiegato...
******************************************************
Se LaTuaCella è vuota allora
    LaTuaCella è uguale a IlValoreDaImportare
Altrimenti
    Esci dalla Sub
Fine Se
With Worksheets("NomeFoglio")
    If .Range("A1") = "" Then
        .Range("A1").Value= tuoValore
    Else
        Exit Sub
    End If
End With
Ma c'è una cosa che non capisco.
Tu parli(scrivi) di macro..., non è che invece hai
fatto una Function, o funzione definita
dall'utente?
-- 
----------------------------
Mauro Gamberini 

dall'utente?
Mah, ho fatto Strumenti, Macro,Registra Nuova Macro e poi l'ho
implementata da codice facendo quello che devo fare...
Al3x

In realtà così non va bene perchè ogni volta importo in una riga
differente quindi sarà sempre vuota... solo che sulla riga nuova deve
importarmi i valori di adesso, su quelle vecchie non deve cambiare...
***************************************************
Dim nr As Long
'Trovo l'ultima riga della colonna A in cui ho dati
nr=TuoFoglio.Range("A65536").End(xlup).Row
'Vado a scrivere nella riga sotto
TuoFoglio.Cells(nr,1).Offset(1,0).Value=TuoValore
Ricorda che per Excel esiste anche:
microsoft.public.it.office.excel
-- 
----------------------------
Mauro Gamberini 

microsoft.public.it.office.excel
Sìsì, ho postato anche lì infatti :-)
Al3x

della variabile nella cella?
Speravo fosse più semplice....
Ho immaginato qcosa del genere:
Num = "=daimportare.asc!R1C12"
ma così assegnerebbe proprio la stringa mentre io devo prendere il
valore.
Come faccio a prendere il valore della cella identificata come R1C12
dell'altro folgio di lavoro?
Grazie,
Al3x

 Speravo fosse più semplice....
Più semplice di così?
Dim Pippo As Long
Pippo = Range("Foglio2!C3").Value
Range("D5").Value = Pippo
O io non ho capito niente del tuo problema, oppure...
Boh.
Ciao


O io non ho capito niente del tuo problema, oppure...
Così ok, solo che il foglio non è di qusta cartella di lavoro ma di
un'altra che apro io al volo sempre tramite macro e in più ho già la
macro con i valori nel formato R1C2.
Per il foglio di lavoro (in realtà un file csv aperto) non ho problemi
a passare da un all'altro ma il rirecuperarmi da R1C2 a B1 è un
disastro...certo che se non c'è maniera...
Al3x

 un'altra che apro io al volo sempre tramite macro
Continuo a non capire il problema.
Ho premuto F1 e ho trovato questo codice (che adatto per tornare 
all'esempio di prima):
Dim Pippo As Long
Pippo = Range("[Cartel2]Foglio1!C3").Value
Range("Foglio1!D5").Value = Pippo
Pippo = Workbooks("Cartel2").Worksheets("Foglio1").Cells(3, 3).Value
Workbooks("Cartel1").Worksheets("Foglio1").Cells(4, 5).Value = Pippo


>Pippo = Workbooks("Cartel2").Worksheets("Foglio1").Cells(3, 3).Value
Mi ero piantato si questo [Cells(3, 3)] che mi mancava, non tanto
perchè non potessi fare altrimenti ma avendo già tutti i formati in
quell'altra maniera sarebbe stato un macello tradurli in Num =
Range("daimportare.asc!F6").Value come stavo facendo...
Grazie mille!
Al3x

Giusto per la cronaca a questo punto non serve nemmeno più la
variabile poichè già scrivendo:
ActiveSheet.Cells(i, 6).Value =
Workbooks("daimportare.asc").Worksheets("daimportare").Cells(1,
12).Value
Mi prende il valore della cella e le prossime volte sono a posto...
Ancora grazie,
Al3x

 Mi ero piantato si questo [Cells(3, 3)] che mi mancava
Non lo ricordavo neanche io.
Ma ho premuto F1 e fra gli esempi dell'oggetto Range c'era proprio 
quello.
