Newsgroup: it.sport.calcio.milan
Titolo: [OT -esperti VBA] UNA DRITTA SU UNA MACRO IN EXCEL

sto facendo una macro che a seconda di un valore che c'è nella cella E1 
con una funzione SE annidata mi restituisce il valore desiderato nella 
cella alla sua destra F1.
 
Per rendere tale macro funzionante indipendentemente dal numero di 
righe, pensavo che bastasse fare doppio clic in basso a destra della 
cella F1 in modo che con il completamento automatico si compilassero 
tutte le righe (e nel file di esempio che ho utilizzato per creare la 
macro ovviamente avviene).
 
Invece quando lancio la macro, se utilizzo un numero di righe maggiori o 
minori, la macro si ferma sempre alla riga 17 che è quella memorizzata 
in VBA.
 
Quale comando in VBA posso applicare per fare un controllo sulla colonna 
E e dire di fermarsi con il completamento automatico nella colonna F 
fino all'ultima riga non vuota della colonna E di volta in volta ?
 
Per come avevo fatto io, il VBA risultante era:
 
 Range("F1").Select
    Selection.AutoFill Destination:=Range("F1:F17")
    Range("F1:F17").Select
 
 
Grazie in anticipo
 
-- 
Non è tanto chi sei quanto quello che scrivi che ti 
qualifica [semi cit.]
 

 sto facendo una macro
 
 
male, molto male.
 
-- 
R. Saclà
 
 


prima che chiudano usenet potresti chiedere qui: microsoft.public.it.office.excel

 Grazie in anticipo
 
Scrivimi a convinto punto cippetecioppete chiocciola tac me punto com
 
 

 Grazie in anticipo
 
Devi migliorare in certe situazioni
 
-- 
http://tinyurl.com/btjgq5h
 
 
 

 Scrivimi a convinto punto cippetecioppete chiocciola tac me punto com
 
 
con te che mi hai confuso per la prima volta col FAKE stamattina non parlo +


 con te che mi hai confuso per la prima volta col FAKE stamattina non parlo +
 
FAKE!
 
 

 FAKE!
 


 ha scritto:
 

alla fine solo Pito mi darà la soluzione sperata, vergonatevi


 alla fine solo Pito mi darà la soluzione sperata, vergonatevi
 
Chissà cos'hai dovuto comprare...
 
 

 fino all'ultima riga non vuota della colonna E di volta in volta ?
 
Premesso: ho capito poco di ciò che vorresti, ma mi pare di capire che 
l'istruzione "do while - next" faccia al caso tuo.
Potresti spiegare meglio?
 

     Range("F1:F17").Select
 
eh beh, certamente si fermerà sempre alla cella F17... glielo hai ordinato 
tu (Range("F1:F17")
 
per selezionare l'intervallo che desideri, mentre stai componendo la macro 
in modo visuale, seleziona l'intervallo con la tastiera, con 
Shift+Ctrl+Frecce direzionali
 
 
 

 Shift+Ctrl+Frecce direzionali
 
 
sì sì la strada era quella, ho risolto, grazie


 Shift+Ctrl+Frecce direzionali
 
La soluzione migliore in casi del genere è però l'immissione manuale di 
codice VBA mediante istruzione ciclica piuttosto che la mera 
registrazione di una macro.
 

     Range("F1:F17").Select
 
Presupponendo che non vi siano celle vuote nella colonna E puoi fare 
cosi'.
 
Dim iAlt As Integer
iAlt = Range("E:E").Find(what:="").Row - 1
Range("F1").Copy
Range("F1:F" & iAlt).PasteSpecial xlPasteFormulas
 
-- 
- Pse
 

 registrazione di una macro.
 
senza il minimo dubbio, ma visto che non capiva il motivo per cui non otteneva 
il risultato sperato con quel range definito...
 
 

 Range("F1:F" & iAlt).PasteSpecial xlPasteFormulas
 
E ALLORA DILLO CHE TI PIACE ALLEGRI
 
-- 
R. Saclà
 
 

 Range("F1:F" & iAlt).PasteSpecial xlPasteFormulas
 
Che tutto questo abbia un senso è davvero pazzesco
 
-- 
http://tinyurl.com/btjgq5h
 
 
 

 Che tutto questo abbia un senso è davvero pazzesco
 
Vabbè ma tu non hai il kernel Franco!
 
 

> iAlt = Range("E:E").Find(what:="").Row - 1
 
In una riga quello che io volevo ottenere con un ciclo: mi levo tanto di 
cappello.
 
 
 

 cella alla sua destra F1.
 
Esporta la cella in pdf, poi la ruoti di 180 gradi, salvi con nome in 
format pdf/a ma con estensione.cvs poi la reimporti da excel tramile la 
funzione file/importa/poco/o/niente/annoi.
 
-- 
Era una notte buia e tempestosa...
 
 

 cappello.
 
Va beh, quella era la versione lunga ma piu' chiara. Per quel che vuole fare 
gli basta anche una sola riga di codice:
 
Range("F1").AutoFill Range("F1:F" & Range("E:E").Find(what:="").Row - 1)
 
-- 
- Pse
 

 ha scritto:

per la cronaca la serie di istruzioni finali (funzionanti) sono state:
 
      Range("F1").Select
    Selection.Copy
    Range("F1").Offset(0, -1).Select
    Selection.End(xlDown).Select
    ActiveCell.Offset(0, 1).Select
    Range(Selection, Selection.End(xlUp)).Select
    ActiveSheet.Paste
    Range("C2").Select
    Application.CutCopyMode = False


 Range("F1").AutoFill Range("F1:F" & Range("E:E").Find(what:="").Row - 1)
 
Queste però sono due righe in una :-)
 
 
 

     Application.CutCopyMode = False
 
Serve più concentrazione
 
-- 
http://tinyurl.com/btjgq5h
 
 
 

 Queste però sono due righe in una :-)
 
Mmmmhhh, no: "Range("F1:F" &... etc." e' il parametro del metodo AutoFill (in vba 
non ci vanno le parentesi), non e' una seconda istruzione. Per scrivere due 
istruzioni su una riga devi separarle con il carattere ":".
 
-- 
- Pse
 

> Mmmmhhh, no: "Range("F1:F" &... etc." e' il parametro del metodo AutoFill
 
Sì, hai ragione.
Sono un po' arrugginito perchè non mi cimento più da diversi anni e non 
ho mai usato AutoFill.
Sono comunque un pioniere: a fine anni '90 usavo VBA in italiano con 
excel 5.0