Discussione:
vba range
(troppo vecchio per rispondere)
Marco
2005-11-14 00:21:03 UTC
Permalink
Si puo creare un range di selezione ( range .select )segliendo
direttamente con il mouse le celle senza dare il riferimento alla cella
specifica?

grazie
es
NO Range("A1:A6").Select
ma
Range(celleselezionateconilmouse ).Select
Norman Jones
2005-11-14 01:52:59 UTC
Permalink
Post by Marco
Si puo creare un range di selezione ( range .select )segliendo
direttamente con il mouse le celle senza dare il riferimento alla cella
specifica?
grazie
es
NO Range("A1:A6").Select
ma
Range(celleselezionateconilmouse ).Select
'----------------------------------------------

Ciao Marco,

Prova:
'=============>>
Sub Tester2()
Dim Rng As Range

'On Error Resume Next
Set Rng = Application.InputBox( _
Prompt:="Seleziona un range", _
Type:=8)
On Error GoTo 0

If Not Rng Is Nothing Then
' Fa qualche cosa, e.g.:
Rng.Interior.ColorIndex = 6
End If

End Sub
'<<=============

---
Regards,
Norman
Norman Jones
2005-11-14 03:14:04 UTC
Permalink
Ciao Marco,
Post by Norman Jones
'On Error Resume Next
avrebbe dovuto essere:

On Error Resume Next

---
Regards,
Norman
Ignazio
2005-11-14 09:08:16 UTC
Permalink
Post by Marco
Range(celleselezionateconilmouse ).Select
Ciao Marco,
potresti chiarire quello che vuoi fare?
Se il range lo hai già selezionato con il mouse, a cosa serve l'istruzione
che hai scritto?
--
Ciao
Ignazio
Marco
2005-11-14 14:08:47 UTC
Permalink
Ciao,
Post by Ignazio
potresti chiarire quello che vuoi fare?
Se il range lo hai già selezionato con il mouse, a cosa serve l'istruzione
che hai scritto?
Ho realizzato una macro, ma il range che mi serve non è sempre lo stesso in
un foglio.
E' del tipo diciamo dinamico, una volta da due celle, altre da 4, ect ,
quindi la macro non sempre funziona.
Quindi avrei pensato che prima li lanciare la macro sarebbe utile che
potessi selezionare al bisogno le celle.
Spero sia piu comprensibile...
celle selezionate ?
celle attive ?

grazie
Mauro Gamberini
2005-11-14 14:23:00 UTC
Permalink
Post by Marco
Ho realizzato una macro, ma il range che mi serve non è sempre lo stesso in
un foglio.
E' del tipo diciamo dinamico, una volta da due celle, altre da 4, ect ,
quindi la macro non sempre funziona.
Quindi avrei pensato che prima li lanciare la macro sarebbe utile che
potessi selezionare al bisogno le celle.
Seleziona le tue celle.
Lancia questa macro.

Public Sub m()

With Selection
MsgBox .Address
.Value = "Ciao"
End With

End Sub

O non capisco qualcosa?
--
----------------------------
Mauro Gamberini
Marco
2005-11-14 15:07:58 UTC
Permalink
Post by Mauro Gamberini
Post by Marco
Ho realizzato una macro, ma il range che mi serve non è sempre lo stesso
in
Post by Marco
un foglio.
E' del tipo diciamo dinamico, una volta da due celle, altre da 4, ect ,
quindi la macro non sempre funziona.
Quindi avrei pensato che prima li lanciare la macro sarebbe utile che
potessi selezionare al bisogno le celle.
Seleziona le tue celle.
Lancia questa macro.
Public Sub m()
With Selection
MsgBox .Address
.Value = "Ciao"
End With
End Sub
Naturalmente funziona
Post by Mauro Gamberini
O non capisco qualcosa?
--
----------------------------
Mauro Gamberini
La macro è:
Range("B14:D14").Select
Selection.Sort Key1:=Range("B14"), Order1:=xlAscending, Header:=xlGuess,
_
OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, _
DataOption1:=xlSortNormal
Range("B15").Select
end sub
questa funziona dalla cella B14, ordina, e si posiziona in B15
ma in B10 non la posso usare, e neppure se ho 4 celle da ordinare ect
quindi il Range( : ) .Select non può avere il riferimento preciso (ma le
celle attive , selezionate)
il Range( ).Select finale invece sarà nella stessa colonna del primo range
ma la riga successiva
Mauro Gamberini
2005-11-14 16:02:22 UTC
Permalink
Post by Marco
Range("B14:D14").Select
Selection.Sort Key1:=Range("B14"), Order1:=xlAscending,
Header:=xlGuess,
Post by Marco
_
OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, _
DataOption1:=xlSortNormal
Range("B15").Select
end sub
questa funziona dalla cella B14, ordina, e si posiziona in B15
ma in B10 non la posso usare, e neppure se ho 4 celle da ordinare ect
quindi il Range( : ) .Select non può avere il riferimento preciso (ma le
celle attive , selezionate)
il Range( ).Select finale invece sarà nella stessa colonna del primo range
ma la riga successiva
Cioè vuoi un ordinamento che parta dalla
cella sulla quale fai click?

Seleziona la cella di intestazione
della tua colonna, lancia la macro:

Public Sub m()

Dim rng As Range
Dim c As Range

Set c = Range(ActiveCell.Address)
Set rng = Range(c.CurrentRegion.Address)

c.Select
Range(rng.Address).Sort Key1:=Range(c.Offset(1, 0).Address), _
Order1:=xlAscending, Header:=xlYes, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

Set c = Nothing
Set rng = Nothing

End Sub
--
----------------------------
Mauro Gamberini
Mauro Gamberini
2005-11-14 16:21:16 UTC
Permalink
Post by Mauro Gamberini
c.Select
Questa riga non serve, puoi cancellarla.
--
----------------------------
Mauro Gamberini
Marco
2005-11-14 16:29:31 UTC
Permalink
"Mauro Gamberini" wrote >
Cioè vuoi un ordinamento che parta dalla
Post by Mauro Gamberini
cella sulla quale fai click?
Mi interessa un ordinamento solo di riga, ma non completa, solo delle celle
selezionate.Una volta teminato l'ordinamento, la cella selezionata sia nella
stessa colonna di quella di partenza della selezione precedente, ma nella
riga dopo.
Post by Mauro Gamberini
Seleziona la cella di intestazione
Public Sub m()
Dim rng As Range
Dim c As Range
Set c = Range(ActiveCell.Address)
Set rng = Range(c.CurrentRegion.Address)
c.Select
Range(rng.Address).Sort Key1:=Range(c.Offset(1, 0).Address), _
Order1:=xlAscending, Header:=xlYes, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Set c = Nothing
Set rng = Nothing
End Sub
--
----------------------------
Mauro Gamberini
grazie
Mauro Gamberini
2005-11-14 16:40:51 UTC
Permalink
Post by Marco
Mi interessa un ordinamento solo di riga, ma non completa, solo delle celle
selezionate.Una volta teminato l'ordinamento,
Brancolo nel buio, ma provo:

Public Sub m()

Dim rng As Range
Dim c As Range

Set rng = Selection
Set c = Range(ActiveCell.Address)

Range(rng.Address).Sort Key1:=Range(c.Offset(1, 0).Address), _
Order1:=xlAscending, Header:=xlYes, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

Set c = Nothing
Set rng = Nothing

End Sub

Selezioni 2,4,5, insomma le celle che vuoi.
Poi chiedi l'ordinamento.
--
----------------------------
Mauro Gamberini
Marco
2005-11-14 17:50:17 UTC
Permalink
Post by Mauro Gamberini
Public Sub m()
Dim rng As Range
Dim c As Range
Set rng = Selection
Set c = Range(ActiveCell.Address)
Range(rng.Address).Sort Key1:=Range(c.Offset(1, 0).Address), _
Order1:=xlAscending, Header:=xlYes, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Set c = Nothing
Set rng = Nothing
End Sub
Selezioni 2,4,5, insomma le celle che vuoi.
Poi chiedi l'ordinamento.
--
----------------------------
Mauro Gamberini
Non mi sembra che sortisca nulla; ma sicuramente ho sbagliato qualcosa.
Ho provato a modificarla:
Public Sub m()

Dim rng As Range
Dim c As Range

Set rng = Selection
Set c = Range(ActiveCell.Address)

Range(rng.Address).Sort Key1:=Range(rng.Address), _
Order1:=xlAscending, Header:=xlYes, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlLeftToRight, _
DataOption1:=xlSortNormal
Range(c.Offset(1, 0).Address).Select
Set c = Nothing
Set rng = Nothing

End Sub
E' scritta in modo corretto? Ci sono elementi da tagliare, aggiungere ?

grazie
Ignazio
2005-11-14 18:11:34 UTC
Permalink
Post by Marco
Range("B14:D14").Select
Selection.Sort Key1:=Range("B14"), Order1:=xlAscending,
Header:=xlGuess,
Post by Marco
_
OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, _
DataOption1:=xlSortNormal
Range("B15").Select
end sub
questa funziona dalla cella B14, ordina, e si posiziona in B15
ma in B10 non la posso usare, e neppure se ho 4 celle da ordinare ect
quindi il Range( : ) .Select non può avere il riferimento preciso (ma le
celle attive , selezionate)
il Range( ).Select finale invece sarà nella stessa colonna del primo range
ma la riga successiva
In base a quello che ho capito io, prova a lanciare questa macro:

Sub SelezioneOrdina()
Selection.Sort Key1:=Range("B14"), Order1:=xlAscending, Header:=xlGuess,
_
OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, _
DataOption1:=xlSortNormal
Selection.Cells(1).Offset(1, 0).Select
End Sub
--
Ciao
Ignazio
Ignazio
2005-11-14 18:22:00 UTC
Permalink
Post by Ignazio
Sub SelezioneOrdina()
Selection.Sort Key1:=Range("B14"), Order1:=xlAscending,
Header:=xlGuess,
Post by Ignazio
_
OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, _
DataOption1:=xlSortNormal
Selection.Cells(1).Offset(1, 0).Select
End Sub
Oops ... è sbagliata!
Prova con quest'altra::

Sub SelezioneOrdina()
Dim rng1 As Range
Set rng1 = Selection.Cells(1)
Selection.Sort Key1:=rng1, Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, _
DataOption1:=xlSortNormal
rng1.Offset(1, 0).Select
End Sub
--
Ciao
Ignazio
Marco
2005-11-14 18:26:32 UTC
Permalink
Post by Marco
Post by Marco
Range("B14:D14").Select
Selection.Sort Key1:=Range("B14"), Order1:=xlAscending,
Header:=xlGuess,
Post by Marco
_
OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, _
DataOption1:=xlSortNormal
Range("B15").Select
end sub
questa funziona dalla cella B14, ordina, e si posiziona in B15
ma in B10 non la posso usare, e neppure se ho 4 celle da ordinare ect
quindi il Range( : ) .Select non può avere il riferimento preciso (ma
le
Post by Marco
celle attive , selezionate)
il Range( ).Select finale invece sarà nella stessa colonna del primo
range
Post by Marco
ma la riga successiva
Sub SelezioneOrdina()
Selection.Sort Key1:=Range("B14"), Order1:=xlAscending,
Header:=xlGuess,
_
OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, _
DataOption1:=xlSortNormal
Selection.Cells(1).Offset(1, 0).Select
End Sub
--
Ciao
Ignazio
E' più difficile a spiegare che a farsi...
Nel foglio non dovrei ordinare sempre le stesse celle (da B14) ma partendo
da una qualsiasi cella del foglio procedere ad un ordinamento su riga di un
numero variabile di celle, quindi avrei necessità di costruire di volta in
volta prima dell'ordinamento il range sul quale operare.
intendo creare 1 macro pre l'ordinamento del foglio, diversamente dovrei
ogni volta fare la procedura :
selezionare le celle da ordinare , menu dati ordina continuare con la
selezione corrente ordina per riga crescente ok
Ignazio
2005-11-14 18:49:14 UTC
Permalink
Post by Marco
E' più difficile a spiegare che a farsi...
Nel foglio non dovrei ordinare sempre le stesse celle (da B14) ma partendo
da una qualsiasi cella del foglio procedere ad un ordinamento su riga di un
numero variabile di celle, quindi avrei necessità di costruire di volta in
volta prima dell'ordinamento il range sul quale operare.
intendo creare 1 macro pre l'ordinamento del foglio, diversamente dovrei
selezionare le celle da ordinare , menu dati ordina continuare con la
selezione corrente ordina per riga crescente ok
La macro che ti ho proposto (la seconda, quella corretta, per chiarezza te
la riscrivo):
----
Sub SelezioneOrdina()
Dim rng1 As Range
Set rng1 = Selection.Cells(1)
Selection.Sort Key1:=rng1, Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, _
DataOption1:=xlSortNormal
rng1.Offset(1, 0).Select
End Sub
----
funziona così:
selezioni la riga che vuoi ordinare, quindi lanci la macro "SelezionaOrdina"
(che ti esegue l'ordinamento e ti seleziona la prima cella a sinistra della
selezione ordinata, ma nella riga sottostante).

Ad esempio:
- selezioni l'intervallo B14: H14;
- lanci la macro;
- dopo vedrai l'intervallo B14:H14 oridinato da sinistra verso destra e
selezionata la cella B15.

Ancora:
- selezioni l'intervallo C20:Z20;
- lanci la macro;
- dopo vedrai l'intervallo C20:Z20 ordinato da sinistra verso destra e
selezionata la cella C21.

Era questo che volevi?
--
Ciao
Ignazio
Marco
2005-11-14 20:16:59 UTC
Permalink
Post by Ignazio
Era questo che volevi?
Precisamente,
non avevo visto la seconda soluzione mentre scivevo , e poi mi sono
assentato dal PC.
Post by Ignazio
--
Ciao
Ignazio
Grazie
Ciao

Continua a leggere su narkive:
Loading...