|
Domanda.
nome=Luisa
cognome=Amodio
versione=2000
conosco2=medio
vba=SI
macro=SI
email=Lamodio@sopragroup.it
chra=213
problema=Ciao Ennius! Scusa se ti contatto ma mi trovo di fronte a un
problema e non riesco a venirne a capo!! Spiego: su foglio Excel visualizzo
una lista di records che prendo da una tabella Access.
Il foglio mi serve solo come display, l'utente si interfaccia con forms per
inserire e modificare dati. Se però vuole eliminare uno o più records,
permetto di selezionarli e dopo conferma li elimino fisicamente. Il problema
sta nella selezione multipla, non riesco a trovare i comandi vba per
decodificare i records selezionati!
Ho provato con 'Selection.Areas.Count' ma questo mi ritorna solo il numero
delle aree selezionate...cone faccio a capire per ciascuna area quali
records ha scelto l'utente?? spero di essermi spiegata e spero tu possa
darmi una mano!
Grazie, e buon lavoro! Luisa.
Risposta.
ciao Luisa, mancano due precisazioni: dici che l'utente usa un form per
interreagire con i dati, ma quali dati? Immagino tu ti riferisca ai dati
presenti importati sul foglio di lavoro, non quelli presenti nella tabella
del database di provenienza, giusto? Poi da ciò che scrivi, a te interessa
sapere come identificare le righe eventualmente selezionate, giusto? Intanto
in Excel non esisono records, ma righe, e le colonne sono i campi.
Dando quindi per scontato che le righe da cancellare siano già selezionate
tramite la procedura scelta dall'utente, per identificare il numero di riga
o delle righe puoi accodare queste istruzioni:
1) per cancellare una sola riga:
ActiveCell.Rows.EntireRow.Delete
Con ActiveCell si identifica la cella in quel momento selezionata, con Rows
si identifica il numero riga relativo alla cella, il resto è comprensibile.
2) per cancellare più righe di una selezione (possono anche essere righe non
contigue purchè selezionate):
With Selection
.Rows.EntireRow.Delete
End With
questa istruzione cancella tutte le righe di una selezione, anche se la
selezione è stata fatta sulle celle di una sola colonna, per esempio: da D4
a D8 selezionate, verranno cancellate le righe (non solo le celle) intere
dalla 4 alla 8.
Se invece non è questo che vuoi, spiegati meglio.
ciao, fammi sapere, ennius
Risposta di
Luisa. Ciao!
Scusa se non mi sono espressa bene, comunque, nel frattempo sono riuscita a
trovare una soluzione, grazie anche al fatidico Help on line di VBA che se
riesci a usare...è fantastico!!
Alla fine quello che cercavo era questo:
Dim rangeToUse, singlearea
Set rangeToUse = Selection
If rangeToUse.Areas.Count = 1 Then
Elimina (Selection.Item(1, 1))
Else
For Each singlearea In rangeToUse.Areas
Elimina (singlearea.Item(1, 1))
Next
End If
Ci devo lavorare ancora un pò su per controllare esattamente la selection
(nella Elimina testo se la riga, non il record, è effettivamente valido),
però l'inizio è ottimo!
Adesso provo i tuoi suggerimenti, ti ringrazio per il tempo che mi hai
dedicato..faccio affidamento su di te per il prossimo 'black hole' che mi si
presenterà!
Luisa.
|