Se(se) ho capito:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim lng As Long
On Error resume Next
If Not Intersect(Range("A1:B5"), Target) Is Nothing Then
lng = Target.Row
Target.Offset(6, 0).Select
Rows(lng).Delete
End If
End Sub
Da copia/incollare nel modulo di codice
del foglio dove vuoi questa cosa.
--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://www.maurogsc.eu/
http://social.microsoft.com/Forums/it-IT/officeit/threads
Dettaglio i passi:
1. seleziono una cella
2. avvio il mio codice che prima verifica se la cella selezionata è
nel range A1:B5 e poi, se la condizione si verifica, elimina la riga
corrispondente alla cella selezionata.
3: se la verifica fallisce, ovvero ho selezionato una cella fuori da
quel range, mi avverte ed esce dalla Sub.
<scritto>
Da copia/incollare nel modulo di codice
del foglio dove vuoi questa cosa.
</scritto>
Dettaglio i passi:
1. seleziono una cella
2. avvio il mio codice che prima verifica se la cella selezionata �
nel range A1:B5 e poi, se la condizione si verifica, elimina la riga
corrispondente alla cella selezionata.
3: se la verifica fallisce, ovvero ho selezionato una cella fuori da
quel range, mi avverte ed esce dalla Sub.
**************************************
Ed � esattamente quello che accade.
Se selezioni una cella nel Range A1:B5,
la riga viene eliminata. Se(se) il foglio
� protetto:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim lng As Long
On Error Resume Next
If Not Intersect(Range("A1:B5"), Target) Is Nothing Then
lng = Target.Row
Target.Offset(6, 0).Select
Me.Unprotect Password:="tuaPassword"
Rows(lng).Delete
Me.Protect Password:="tuaPassword"
End If
End Sub
Macro da agganciare al tuo pulsante/bottone,
da copia/incollare in un modulo standard:
Public Sub mEliminaRiga()
'dichiaro le variabili
Dim lng As Long
Dim sh As Worksheet
'metto un riferimento al foglio attivo
Set sh = ActiveSheet
With sh
'se la cella attiva � nel Range
'A1:B5
If Not Intersect(.Range("A1:B5"), _
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 With
'Set a Nothing della variabile oggetto
Set sh = Nothing
End Sub
Occhio per�!
Questa macro � *astratta*, cio� funziona
su qualsiasi foglio sia attivo se lanciata.
Perch� miri solo ad un determinato foglio,
esempio il Foglio1, dobbiamo specificarlo:
Public Sub mEliminaRiga()
'dichiaro le variabili
Dim lng As Long
Dim sh As Worksheet
Set sh = ActiveSheet
With sh
'se il foglio attivo � il
'Foglio1
If .Name = "Foglio1" Then
'se la cella attiva � nel Range
'A1:B5 del Foglio1
If Not Intersect(.Range("A1:B5"), _
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
Il mio Shabbat � mobile... ;-)
E grazie per il gentile riscontro.