hilpers


  hilpers > microsoft.* > microsoft.office.excel

 #1  
08.02.2010, 09:38
Snoopy
Ciao ragazzi, cia Mauro,
ho provato invano a riprendere un vecchio post per evitare di aprirne
uno nuovo:

http://groups.google.com/group/micro...db205d28372d42

Il problema è presto spiegato.
Nel codice scritto da Mauro trovo:

============>
...
If Not Intersect(.Range("A1:B5"), ActiveCell) Is Nothing Then
...
<============

Dando per scontato che la cella selezionata sia nel range indicato e
che questo sia sempre tale... da A1 a B5.
Nel mio caso, il range è dinamico.
L'inizio è sempre (per esempio) la cella A1 (che io ho nominato
Start_1) ma l'ultima può cambiare pertanto ho anteposto al tuo codice
un Do... Loop come segue:

============>
...
Range("Start_1").Select
ActiveCell.Offset(1, 0).Select
Set InizioRng = ActiveCell
Do Until ActiveCell.Value = ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell.Offset(-1, 0).Select
Set FineRng = ActiveCell
...
<============

Facendo così, però, perdo la cella attiva "da cancellare".
Lo sò, dovrei dimensionarla a priori ma non sò come fare.
Posso chiedere un ulteriore aiuto?
Grazie 1000 e buona giornata.
 #2  
08.02.2010, 11:53
Scossa
On 8 Feb, 11:38, Snoopy <am43210> wrote:
> un Do... Loop come segue:
>
> ============>
>    ...
>    Range("Start_1").Select
>    ActiveCell.Offset(1, 0).Select
>    Set InizioRng = ActiveCell
>    Do Until ActiveCell.Value = ""
>        ActiveCell.Offset(1, 0).Select
>    Loop
>    ActiveCell.Offset(-1, 0).Select
>    Set FineRng = ActiveCell
>    ...
> <============


Non ho letto il thread precedente e quindi non entro nel merito, mi
limito al tuo loop:

jj = 1 ' ricordati di dichiaralo con Dim jj as long
Do Until ActiveCell.Offset(jj, 0).Value = ""
jj = jj+1
Loop
Set FineRng = ActiveCell.Offset(jj, 0)

Scritta qui al volo, da testare.

Comunque sicuramente Maura di saprà fornire una soluzione più elegante
e, soprattutto funzionale.

Bye!
Scossa
 #3  
08.02.2010, 12:20
Mauro Gamberini
> Comunque sicuramente Maura
>


LOL!
 #4  
08.02.2010, 12:26
Mauro Gamberini
Ciao ragazzi, cia Mauro,
ho provato invano a riprendere un vecchio post per evitare di aprirne
uno nuovo:

http://groups.google.com/group/micro...db205d28372d42

Il problema è presto spiegato.
Nel codice scritto da Mauro trovo:

============>
...
If Not Intersect(.Range("A1:B5"), ActiveCell) Is Nothing Then
...
<============

Dando per scontato che la cella selezionata sia nel range indicato e
che questo sia sempre tale... da A1 a B5.
Nel mio caso, il range è dinamico.
<cut>

Aggiungi:

Dim lUltRiga As Long
'.........

lUltRiga = Me.Range("B" & rows.Count).End(xlUp).Row
If Not Intersect(.Range("A1:B" & lUltRiga), ActiveCell) Is Nothing Then
'ecc


Se non riesci, chiedi sempre in
questo thread.
Grazie per l'attenzione.
 #5  
08.02.2010, 12:53
AM
Ciao Mauro,
non posso farlo... devo (per forza di cose) partire dall'alto e
scendere fino alla fine della tabella.
Perchè? Perchè alla fine della mia tabella, ci sono due righe vuote e
poi una nuova tabella che non ha niente a che vedere con quella in
oggetto.

Esempio:
La prima tabella é A1:B5... alla quale, giornalmente accodo nuovi
record... quindi A1 rimarrà sempre fisso B5 diventerà B6 poi B7 poi B8
ecc. ecc.
La seconda tabella, che si trova sotto la prima si scalerà la sua
posizione in funzione dei record aggiunti nella tabella sopra.

E pensa che questo codice devo replicarlo anche per la seconda
tabella. laddove mi troverò anche con il range di inizio tabella ad
essere dinamico.
 #6  
08.02.2010, 12:54
Mauro Gamberini
<cut>

Utilizzando uno degli esempi postati nel
link a cui fai riferimento, prova:

Public Sub mEliminaRiga()

'dichiaro le variabili
Dim lng As Long
Dim sh As Worksheet
Dim lUltRiga As Long '<<<===

Set sh = ActiveSheet

With sh
'se il foglio attivo è il
'Foglio1
If .Name = "Foglio1" Then
'trovo lultima riga con un dato
'della colonna B
lUltRiga = .Range("B" & _
.Rows.Count).End(xlUp).Row '<<<===
'se la cella attiva è nel Range
'A1:Bn del Foglio1, dove n è
'l'ultima cella con dato della
'colonna B
If Not Intersect(.Range("A1:B" & lUltRiga), _
ActiveCell) Is Nothing Then '<<<===
'recupero il numero di riga della
'cella attiva
lng = ActiveCell.Row
'elimino l'eventuale protezione
'del foglio
.Unprotect Password:="tuaPassword"
'elimino la riga
.Rows(lng).Delete
'rimetto la protezione al foglio
.Protect Password:="tuaPassword"
End If
End If
End With

'Set a Nothing delle variabili oggetto
Set sh = Nothing

End Sub


Dove '<<<=== indicano righe aggiunte e/o modificate.

Grazie per l'attenzione.
 #7  
08.02.2010, 13:08
Mauro Gamberini
non posso farlo... devo (per forza di cose) partire dall'alto e
scendere fino alla fine della tabella.
Perchè? Perchè alla fine della mia tabella, ci sono due righe vuote e
poi una nuova tabella che non ha niente a che vedere con quella in
oggetto.
******************************************

Modifica xlUp con xlDown.

Tipo:

lUltRiga = NomeFoglio.Range("A1").End(xlDown).Row

Non dovrebbe essere difficile adesso.

E pensa che questo codice devo replicarlo anche per la seconda
tabella. laddove mi troverò anche con il range di inizio tabella ad
essere dinamico.
************************************

Se sai che l'inizio si trova 2 righe sotto alla fine della prima....
 #8  
08.02.2010, 14:49
Snoopy
>
> lUltRiga = NomeFoglio.Range("A1").End(xlDown).Row
>



Ho fatto la modifica che mi hai suggerito ma, nonostante ci siano
righe vuote tra la prima tabella e la seconda, la variabile lUltRiga
viene valorizzata 65536.
Quando, sopra, parlavo del Do... Loop per riconoscere l'ultima riga
della mia tabella era proprio per evitare di cancellare senza
controllo tra una tabella e l'altra.
I miei fogli contengono 3 tabelle distinte e separate.
Io vorrei creare tre bottoni, associati ad altrettante macro, che mi
permettano di cancellare record dalla tabella associata.

In questa fase, il tuo codice funziona perfettamente perchè cancella
il record selezionato ma non riconosce i confini della tabella su cui
stò lavorando.
 #9  
08.02.2010, 16:41
Snoopy
Trovato il problema... non avevo rettificato il riferimento della
tabella dal quale doveva partire l' xlDown.
Adesso funziona tutto.
Grazie Mauro...gentilissimo!
 #10  
08.02.2010, 16:43
Mauro Gamberini
> Trovato il problema... non avevo rettificato il riferimento della
> tabella dal quale doveva partire l' xlDown.
> Adesso funziona tutto.
>


Bene.
Grazie a te per il riscontro.
 #11  
08.02.2010, 19:52
Scossa
In article <4b700fb5$0$1145$4fafbaef>,
maurogscRIMUOVERE says...
> > Comunque sicuramente Maura
> >

>
> LOL!


Lol, scusa Mauro... è destino che con il tuo nome ci faccia
pasticci... ma almeo le tue risposte non cadono nel vuoto,
al contrario delle mie che spesso non ottengono un minimo
di riscontro (chiedere è lecito, rispondere è cortesia,
ringraziare chi perde tempo a rispondere è buona
educazione) :-(
 #12  
08.02.2010, 21:30
r
On 8 Feb, 21:52, Scossa <Inva> wrote:
> In article <4b700fb5011454fafb>,
> maurogscRIMUOV...@RIMUOVEREaliceposta.it says...
>>

> Lol, scusa Mauro... è destino che con il tuo nome ci faccia
> pasticci... ma almeo le tue risposte non cadono nel vuoto,
> al contrario delle mie che spesso non ottengono un minimo
> di riscontro (chiedere è lecito, rispondere è cortesia,
> ringraziare chi perde tempo a rispondere è buona
> educazione) :-(
>
> --
> Bye!
> Scossa


Scossa ... Scossa ....
chi è Scossa?
:-)

p.s.
non te la prendere ... io ho letto direi che va bene
sempre che possa consolarti :-)
 #13  
08.02.2010, 23:05
eliano
On 8 Feb, 21:52, Scossa <Inva> wrote:
> In article <4b700fb5011454fafb>,
> maurogscRIMUOV...@RIMUOVEREaliceposta.it says...
>>

> Lol, scusa Mauro... è destino che con il tuo nome ci faccia
> pasticci... ma almeo le tue risposte non cadono nel vuoto,
> al contrario delle mie che spesso non ottengono un minimo
> di riscontro (chiedere è lecito, rispondere è cortesia,
> ringraziare chi perde tempo a rispondere è buona
> educazione) :-(
>
> --
> Bye!
> Scossa


Ciao Scossa.
Non te la prendere, e non ti curare della maleducazione imperante.
Tu hai la certezza di fare una cosa giusta, utile e meritevole, anche
a favore di chi non la merita.
Loro sono in difetto, non tu.
Cordialmente
Eliano
 #14  
09.02.2010, 06:09
Scossa
On 8 Feb, 23:30, r <robb> wrote:
> On 8 Feb, 21:52, Scossa <Inva> wrote:
>
> Scossa ... Scossa ....
> chi è Scossa?


Quella cosa che senti se metti due dita nella presa della corrente
:-))

Bye!
Scossa
 #15  
09.02.2010, 06:10
Scossa
On 9 Feb, 01:05, eliano <falinieli> wrote:

> Loro sono in difetto, non tu.


Grazie Eliano, davvero!

Bye!
Scossa

Discussioni simili
[Per Stunat] Riprendo qui una discussione

Anzitutto ti ringrazio molto della possibilità di confronto che mi dai con la tua esperienza rispondendomi. Tu dici che io svolgerei lavoro impiegatizio e non tirocinio. Ti...

Cancellare riga da range.

Buon pomeriggio, vi chiedo la gentilezza di non prendermi per pazzo. In un foglio di lavoro completamente bloccato ho una tabella A1:B5 (per esempio) che contiene le uniche...

riprendo discussione da forum vocesuip

[..] Vorrei discutere di casi similari a questo, dove invece di voler mettere su un provider fittizio per dare connettività a larga banda facendo un primo tratto con...

RIPRENDO LA DISCUSSIONE

mi scuso con tutti ma soprattutto con massimo che ha cercato di aiutarmi al meglio, ma ho un problema che non riesco a risolvere.. scrivo sotto la pima parte della soluzione...


Tutti gli orari sono GMT. Attualmente sono le 10:43. | Privacy Policy