Option Explicit
Sub test()
Dim rng As Excel.Range
Dim rngr As Excel.Range
Dim rngT As Excel.Range
Dim r As Long
On Error Resume Next
Set rng = ActiveSheet.UsedRange.SpecialCells(xlCellTypeComments)
If Err Then
Exit Sub
End If
On Error GoTo 0
Set rngr = Nuovo_Range(ThisWorkbook)
For Each rngT In rng
rngr.Offset(r, 0) = rngT.Address(, , , True)
rngr.Offset(r, 1) = rngT.Comment.Text
r = r + 1
Next
End Sub
Function Nuovo_Range( _
Wb As Excel.Workbook, _
Optional Nome_base As _
String = "Res") As Excel.Range
Dim b
Set Nuovo_Range = Wb.Worksheets.Add.Range("A1")
Application.ScreenUpdating = False
On Error Resume Next
Do
Err.Clear
b = b + 1
Nuovo_Range.Parent.Name = Nome_base & b
Loop While Err
Application.ScreenUpdating = True
End Function
saluti
r
--
Come e dove incollare il codice:
http://www.rondebruin.nl/code.htm
Il mio ultimo lavoro ...
http://excelvba.altervista.org/blog/index.php/Excel-VBA/UsedRange-eccezioni-e-alternative.html
"gimart" ha scritto:
Se(se) ho capito.
Una cella(A15) con un commento e
alla stessa hai assegnato il nome
Commento.
Vuoi in qualsiasi cella selezionata,
inserire il commento di quella cella.
Copia/incolla questa in un modulo
standard.
Public Sub m()
With ActiveCell
.Value = Range( _
"Commento").Comment.Text
End With
End Sub
Un' alternativa.
Public Sub m()
With ActiveCell
.Value = [Commento].Comment.Text
End With
End Sub
Assegna la macro ad un tasto di scelta rapida,
esempio CTRL + a.
Seleziona una cella, premi CTRL+a.
--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://www.maurogsc.eu/
http://social.microsoft.com/Forums/it-IT/excelit/threads
[...]
> Un' alternativa.
>
> Public Sub m()
> With ActiveCell
> .Value = [Commento].Comment.Text
> End With
> End Sub
[Commento]?
[ C o m m e n t o ]??
[ ]???
Inorridisco...
Bruno
;-)
L'ho gi� scritto altre volte, non leggi... ;-)
Le parentesi quadre le utilizzo
per i Name. Nei miei files, sempre.
Il perch�? Ritengo di sapere
cosa sto facendo(nei miei files)
e quindi le [] identificano *solo*
i Names.
Non � la prima volta che per i
Names propongo le [] anche qui.
Nello specifico.
[Commento] rappresenta una cella
sola per tutto il file,
vedila come una costante.
[A1], no e qui � il problema, quello vero.
In entrambi i casi � comunque pi� veloce
*non utilizzare* le [].
[A1] = qualcosa
�, sopratutto qui dove viene *chiunque*,
un modo che ritengo sbagliato di proporre
una soluzione. Ritengo io, che non sono
nessuno, lo sottolineo.
NomeFoglio.Range(Range).Value = qualcosa
penso sia pi� comprensibile e sia pi� sicuro
ed *educativo*. Sempre il Mauro pensiero,
sempre il pensiero di un signor nessuno.
Come al solito, per le [] rimando qui:
http://support.microsoft.com/kb/104502/en-us
Ognuno libero di fare come vuole, ci mancherebbe.
>> [Commento]?
>>
>> Inorridisco...
>>
>
> ;-)
>
> L'ho gi� scritto altre volte, non leggi... ;-)
> Le parentesi quadre le utilizzo
> per i Name.
Mi pareva...
[...]
> In entrambi i casi � comunque pi� veloce
> *non utilizzare* le [].
Me lo ricorder� alla prossima F1.
> [A1] = qualcosa
[Sheet23!A1] = qualcosa
Mai, se non per trascuratezza, il solo [A1].
Bruno
"r" wrote:
> non ho capito ...
Cercherò di spegarmi meglio: in una certa cella di un foglio Excel 2003 ho
inserito un commento. Ora vorrei poter copiare questo commento in altre celle
dello stesso foglio senza passare per "Copia" -> "Incolla speciale" ->
"Note", ma semplicemente, posizionandomi nella cella ove debbo copiare questo
commento e premendo un pulsante cui assocerò la macro che ho descritto.
Esempio pratico: supponiamo che il commento da inserire sia "Pagato", io
scrivererò questo commento in una cella del mio foglio che chiamerò proprio
"Pagato". Ora se in altre celle del foglio dovrò inserire il commento
"Pagato", mi posizionerò via via in tutte queste celle ed ogni volta lancerò
la macro con il pulsante a cui l'avrò associata. Spero di essermi spiegato
bene :-).
ROTFL!
> [Sheet23!A1] = qualcosa
> Mai, se non per trascuratezza, il solo [A1].
>
Libero, ci mancherebbe.
Per�, perch� nei siti degli MVP,
negli ng in inglese, ecc., le [] non
si vedono?
--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://www.maurogsc.eu/
...e io spero tu abbia letto la mia risposta.
--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://www.maurogsc.eu/
http://social.microsoft.com/Forums/it-IT/excelit/threads
> Per�, perch� nei siti degli MVP,
> negli ng in inglese, ecc., le [] non
> si vedono?
Noi liberi pensatori a questo mondo siamo in pochi!
Bruno
Anche Socratis(Tunze) scrive pi� o meno
la stessa cosa... ;-)))
Ciao Bruno, leggo sempre volentieri
i tuoi interventi, [] o non [].
--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://www.maurogsc.eu/
http://social.microsoft.com/Forums/it-IT/excelit/threads
>> Noi liberi pensatori a questo mondo siamo in pochi!
>>
>
> Anche Socratis(Tunze) scrive pi� o meno
> la stessa cosa... ;-)))
>
> Ciao Bruno, leggo sempre volentieri
> i tuoi interventi, [] o non [].
Da' un'occhiata a microsoft.public.excel,
thread: Deprecated [...].
Vediamo cosa risponde la comunit� internazionale.
Bruno
Forse era pi� indicato excel.programming.
Comunque non � una guerra, eh.
Per la terza volta: ognuno � libero
di fare come crede.
Ricordi:
http://groups.google.it/group/microsoft.public.it.office.excel/msg/00146bf8258b5cc5
Non interverr� pi� sulle []
come sul Set a Nothing, su
Public e Private
o su altre cose di questo
genere se non in risposte ad OP
che chiedano opinioni.
E' da un po' che ignoro la cosa,
tu e Roberto credo ve ne siate accorti.
Rispetto il vostro punto di vista,
pur non condividendolo.
Maurizio scrisse(pi� o meno) che le [] c'erano,
bastava sapere come e dove utilizzarle.
Te la *riposto*:
Se(se) ho capito.
Una cella(A15) con un commento e
alla stessa hai assegnato il nome
Commento.
Vuoi in qualsiasi cella selezionata,
inserire il commento di quella cella.
Copia/incolla questa in un modulo
standard.
Public Sub m()
With ActiveCell
.Value = Range( _
"Commento").Comment.Text
End With
End Sub
Un' alternativa.
Public Sub m()
With ActiveCell
.Value = [Commento].Comment.Text
End With
End Sub
Assegna la macro ad un tasto di scelta rapida,
esempio CTRL + a.
Seleziona una cella, premi CTRL+a.
--
Se capisco correttamente la tua richiesta, intendi copiare il commento
contenuto della cella di nome "commento".nella cella attiva (non come
contenuto bens�, anche in questa, come commento)
E' cos�?
Allora assegna questa maxi-macro ad un tasto di scelta rapida:
-----
Sub CopyComm()
ActiveCell.AddComment.Text [commento].Comment.Text
End Sub
-----
Dimmi se ho capito esattamente, oppure spiega meglio quello che vuoi fare.
Ciao,
E.
attenzione hai commenti di John Walkenbach
qui sotto le mie udf ... cchio però ricordo che se utilizzate da inserisci
funzione ->definite dall'utente ... andava in palla ...
quindi eventualmente devi scrivere direttamente nella cella la formula ...
es.
B1=FormulaCommento("prova";A1)
oppure
B1=FormulaCommento(C1;A1)
Public Function FormulaCommento(testo As String, d As Excel.Range) As String
'aggiunge un commento ad una o più celle
Dim rnG As Excel.Range
Application.Volatile (False)
For Each rnG In d
rnG.ClearComments
rnG.AddComment
rnG.Comment.Visible = False
rnG.Comment.Text Text:=testo
Next
FormulaCommento = ""
End Function
Public Function CancellaCommento(d As Excel.Range) As String
'cancella i commenti di celle
Dim rnG As Excel.Range
Application.Volatile (False)
For Each rnG In d
rnG.ClearComments
Next
CancellaCommento = ""
End Function
saluti
r
--
Come e dove incollare il codice:
http://www.rondebruin.nl/code.htm
Il mio ultimo lavoro ...
http://excelvba.altervista.org/blog/index.php/Excel-VBA/UsedRange-eccezioni-e-alternative.html
"gimart" ha scritto:
> Porca miseria, nessuna soluzione, ma è proprio difficile?
incollo sempre nei miei post il link come e dove incollare il
codice ...
cosa non hai capito?
sono UDF funzioni definite dall'utente ...
dimmi cosa non hai capito ed eventualmente ti rispondo.
saluti
r
--
Come e dove incollare il codice:
http://www.rondebruin.nl/code.htm
Le mie case nel web:
http://excelvba.altervista.org/blog/index.php/Table/Excel-VBA/
voglio leggere ... aggiungi il link non lo trovo ...
> Scusami r, ma non ci ho capito niente! Dovresti darmi delle spiegazioni
> "terra, terra", come diciamo a Napoli :-).
> Grazie
incollo sempre nei miei post il link come e dove incollare il
codice ...
cosa non hai capito?
sono UDF funzioni definite dall'utente ...
dimmi cosa non hai capito ed eventualmente ti rispondo.
saluti
r
--
Come e dove incollare il codice:
http://www.rondebruin.nl/code.htm
Le mie case nel web:
http://excelvba.altervista.org/blog/index.php/Table/Excel-VBA/
voglio leggere ... aggiungi il link non lo trovo ...
saluti
r
***************************************
Ma non dice nulla
(alla data e all'ora di questo post).
L'ng pi� adatto sarebbe stato:
microsoft.public.excel.programming
Resta il fatto che su quegli ng di []
ne trovi poche, come sui siti
degli MVP che tutti conosciamo,
sui libri in lingua inglese e, non ultima,
sulla guida del vb di Excel.
*E' una constatazione,
non una polemica.*
Resta il documento di Microsoft
che non dice di non utilizzare mai le [],
ma un'altra cosa ben specificata
in 3 punti.
Ciao Roberto e buona giornata.
--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://www.maurogsc.eu/
"Mauro Gamberini" wrote:
> Se(se) ho capito.
> Una cella(A15) con un commento e
> alla stessa hai assegnato il nome
> Commento.
> Vuoi in qualsiasi cella selezionata,
> inserire il commento di quella cella.
Non voglio inserire il commento della A15 come testo, ma come commento della
cella selezionata. In buona sostanza, voglio ottenere che la cella
selezionata abbia lo stesso commento della cella A15.
Grazie Mauro
"plinius" wrote:
>
> "gimart" <gim...@discussions.microsoft.com> ha scritto nel messaggio
> news:BC17A3CC-B8EC-4E1A...@microsoft.com...
> > Ciao a tutti. Non sono un esperto di Visual Basic ed avrei bisogno che
> > qualcuno dei Maestri mi aiutasse a creare una macro per Excel 2003. Si
> > tratta
> > di questo: stando in una qualsiasi cella del foglio, vorrei copiare in
> > essa
> > solo le note (commenti) di una particolare cella dello stesso foglio che,
> > naturalmente, ha un nome, ad es. "COMMENTO". In effetti, quindi, si
> > tratterebbe di questo: stando ad es. nella cella A15, dovrei dire "copia
> > solo
> > le note della cella "COMMENTO" in questa cella (A15). Spero non sia troppo
> > difficile :-). Grazie
>
> Se capisco correttamente la tua richiesta, intendi copiare il commento
> contenuto della cella di nome "commento".nella cella attiva (non come
> contenuto bensì, anche in questa, come commento)
> E' così?
>
> Allora assegna questa maxi-macro ad un tasto di scelta rapida:
> -----
> Sub CopyComm()
> ActiveCell.AddComment.Text [commento].Comment.Text
> End Sub
> -----
>
> Dimmi se ho capito esattamente, oppure spiega meglio quello che vuoi fare.
>
> Ciao,
> E.
>
Hai capito benissimo: copiare il commento della cella "Commento" come
commento della cella selezionata.
Ho provato la tua macro, ma, quando la lancio, mi compare un messaggio di
errore, in cui il testo [commento] è selezionato, che dice "Errore di
compilazione: prevista Function o variabile".
Hai prima creato la cella "commento" con menu\inserisci\nome\definisci?
La macro d� errore anche se la cella "commento" esiste ma non ha un
commento.
Se vuoi evitarlo cambiala cos�:
Sub CopyComm()
On Error Resume Next
Sempre tua la scelta su quale
selle due:
Public Sub m()
On Error Resume Next
With ActiveCell
.AddComment
.Comment.Text _
Text:=Range( _
"Commento").Comment.Text
End With
End Sub
Public Sub ma()
On Error Resume Next
With ActiveCell
.AddComment
.Comment.Text _
Text:=[Commento].Comment.Text
End With
End Sub
Poi assegna alla macro un tasto di scelta rapida
come consigliato precedentemente.
Grazie per l'attenzione.
--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://www.maurogsc.eu/
Ciao Mauro,
nessuna polemica concordo ...
solo mi piace capire e non mi basta che MVP, comunità
e guru di ogni tipo mi dica fai così ...
Io uso la notazione breve ... a differenza di Bruno
però la uso principalmente per riferirmi ad una cella
o un intervallo di celle ... evito di aggiungere il nome del foglio
o il nome di altri intervalli denominati all'interno delle [] ...
raramente ... ma possono creare
problemi all'orchè in situazioni tanto deprecabili quanto
comunque consentite da Excel il nome del foglio o
della cartella o del Nome Definito assumono diciture
diciamo *ambigue*
Bruno dice mai [A1] ... mi piacerebbe sapere perchè ...
io l'ho già detto ... secondo me il modo più semplice
per settare riferimenti a fogli e cartelle è quello di assegnare
precisamente un riferimento ad un range e successivamente
utilizzare la proprietà parent per settare riferendosi al range
così nelle routine test se devo riferirmi a foglio e cartella attiva
scrivo
Set rng=[a1]
normalmente questa è l'unica riga di codice che andrebbe
modificata prima dell'uso ...
saluti
r
incollo alcuni nomi che generano l'errore
all'interno della notazione breve
Sub TestNotazioneBreve1()
Dim rng As Excel.Range
Dim s As String
'primo problema può essere il punto esclamativo
'nel nome ... deprecabile ovviamente ma consentito
s = "Pippo!"
ActiveSheet.Name = s
Set rng = ThisWorkbook. _
Worksheets(s).[a1]
Set rng = [Pippo!!B1] 'questa riga va in errore
End Sub
Sub TestNotazioneBreve2()
Dim rng As Excel.Range
Dim s As String
'secondo problema può essere il nome *ambiguo*
'... deprecabile ovviamente ma consentito
s = "A1 A2"
ActiveSheet.Name = s
Set rng = ThisWorkbook. _
Worksheets(s).[a1]
Set rng = [A1 A2!B1] 'questa riga va in errore
End Sub
Sub TestNotazioneBreve3()
Dim rng As Excel.Range
Dim s As String
'Altro nome *ambiguo*
'... deprecabile ovviamente ma consentito
s = "pippo A1"
ActiveSheet.Name = s
Set rng = ThisWorkbook. _
Worksheets(s).[a1]
Set rng = [pippo A1!B1] 'questa riga va in errore
Debug.Print rng.Parent.Name
End Sub
Sub TestNotazioneBreve4()
Dim rng As Excel.Range
Dim s As String
'Altro nome *ambiguo*
'... deprecabile ovviamente ma consentito
s = "+"
ActiveSheet.Name = s
Set rng = ThisWorkbook. _
Worksheets(s).[a1]
Set rng = [+!B1] 'questa riga va in errore
Debug.Print rng.Parent.Name
End Sub
Sub TestNotazioneBreve5()
Dim rng As Excel.Range
Dim s As String
'Altro nome *ambiguo*
'... deprecabile ovviamente ma consentito
s = "uno-due"
ActiveSheet.Name = s
Set rng = ThisWorkbook. _
Worksheets(s).[a1]
Set rng = [uno-due!B1] 'questa riga va in errore
End Sub
Ok, perfetto.
Io non ho ne *la* ne *una* risposta.
Ho le mie convinzioni ed il *mio* modo
di scrivere codice, cos� come tu hai
il tuo. Se qualcuno mi/ci illumina,
ben venga.
Io uso la notazione breve ... a differenza di Bruno
per� la uso principalmente per riferirmi ad una cella
o un intervallo di celle ... evito di aggiungere il nome del foglio
o il nome di altri intervalli denominati all'interno delle [] ...
raramente ... ma possono creare
problemi all'orch� in situazioni tanto deprecabili quanto
comunque consentite da Excel il nome del foglio o
della cartella o del Nome Definito assumono diciture
diciamo *ambigue*
**************************************
Io la uso solo ed esclusivamente per puntare
a nomi da me definiti e in ambiente ben controllato,
preferendo anche l�, se possibile, Range(Nome).
Non ho altro da aggiungere a questo
thread se non pareri personali
e dettati da esperienze passate,
quindi mi astengo dal proporli perch�
non sono *la* risposta ma la *mia*
risposta.
incollo alcuni nomi che generano l'errore
all'interno della notazione breve
********************************
Uno in pi�:
Public Const a1 As String = "Pippo"
Public Sub m()
MsgBox [a1]
End Sub
beh la *Tua* risposta aggiunge un caso
molto significativo ... ottimo motivo *vero*
per considerare di non usare la notazione
breve ... non la sottovaluterei ...
saluti
r
;-)
Ciao grande Robby!
Ciao Bruno.
Direi che la risposta ricalca
pi� o meno alcune tesi sostenute
in questo thread.
Credo per� che qualcosa di
pi� interessante si potrebbe
ottenere postando qui:
microsoft.public.excel.programming
maggiormente frequentato da chi scrive codice
per Excel.
Vedi tu.
Buona giornata.
--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://www.maurogsc.eu/