Processi in Microsoft 365 per configurare app Office, riscattare i codici Product Key e attivare le licenze.
Con questa macro nidificata creo automaticamente i confini di qualunque tabella.
In questo esempio ho presupposto che tutte le colonne siano contigue e che tutte le righe della tabella siano popolate.
Inizio a dichiarre delle variabili di tipo "Public" che normalmente inserisco in un modulo a parte e che sono utilizzate per tutti i programmi
Dichiarazione di variabili
Public iMyR, iMyR1, iMyE, iMyE1 As Long 'variabili che indicano il numero di riga
Public iMyC, iMyC1 As Integer 'variabili che indicano il numero di colonna
Routine
Sub Delimita_tabella()
'mi posiziono sulla prima cella del foglio attivo
Application.Goto Reference:="R1C1"
'cerco la cella che contiene AA (se voglio la certezza che nel foglio esista AA devo utilizzare la funzione COUNTIF legata all'intero foglio)
Cells.Find(What:="AA", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
iMyC = ActiveCell.Column
'determino il numero di colonna della cella che contiene AA
iMyR = ActiveCell.Row 'determino il numero di riga della cella che contiene AA
Selection.End(xlToRight).Select 'mi sposto sull'ultimo titolo della tabella
iMyC1 = ActiveCell.Column 'determino il numero dell'ultima colonna 'determina il numero di colonna della cella che contiene AA
'mi posiziono sull'ultima riga della colonna il cui titolo e' AA
Application.Goto Reference:="R1048576C" & iMyC
'salgo per intercettare l'ultima riga utile della tabella
Selection.End(xlUp).Select
iMyE = ActiveCell.Row 'determino il numero dell'ultima riga
'ora ho tutti gli stumenti per costruirmi il RANGE
'seleziono per verifica l'intera tabella
Range(Cells(iMyR, iMyC), Cells(iMyE, iMyC1)).Select
'assegno automaticamente il nome di zona ORIGINE_TABELLA
Range(Cells(iMyR, iMyC), Cells(iMyE, iMyC1)).Name = "Origine_tabella"
'assegno automaticamente il nome di zona VUOTA_TABELLA
Range(Cells(iMyR, iMyC), Cells(iMyE, iMyC1)).Name = "Vuota_tabella"
'seleziono la cella attiva
ActiveCell.Select
End Sub
Commento:
Con queste macro nidificate ho la possibilita' di crearmi la "tabella su misura"
Se le colonne non sono contigue o tutte le celle non sono popolate e' necessario creare un LOOP di analisi e selezionare i valori massimi trovati.
Salutoni
Marexe46
Per favore, non rispondere a post così vecchi. Grazie. Crea solo confusione.
Inoltre, se la tabella ha righe/colonne contigue e vuoi trovare i suoi riferimenti(qui lo faccio in una MsgBox) e/o posizionarti sulla prima riga vuota per fare un nuovo inserimento, utilizzando vb e Find:
Public Sub m()
Dim rng As Range
With ActiveSheet
Set rng = .Cells.Find(What:="AA", _
After:=ActiveCell, _
LookIn:=xlFormulas, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=True _
, SearchFormat:=False)
If rng Is Nothing Then 'se non trovo il valore
MsgBox "Non trovata nessuna corispondenza."
Set rng = Nothing
Exit Sub
End If
Set rng = rng.CurrentRegion
MsgBox rng.Address '<<==riferimenti tabella
rng.Cells(rng.Rows.Count + 1, 1).Select '<<==selezione riga vuota
End With
Set rng = Nothing
End Sub
Guida del vb di Excel, CurrentRegion.
Diciamo anche che la combinazione: Find/ActiveSheet è qualcosa di molto, molto brutto. Non ho nessun controllo di *dove* la routine venga eseguita e della riga selezionata. Sarebbe sempre meglio sapere cosa si sta cercando e dove lo si cerca.
Ancora nel tuo codice, il parametro LookAt settato a xlPart trova sì AA, ma anche aaaAA, aabb, bbaabb, ecc. Meglio: xlWhole. Se poi settiamo MatchCase:=True, aumentiamo la sicurezza della nostra ricerca e siamo sicuri che troveremo la cella che contiene AA(se presente).
,--
La soluzione, il codice ed i files sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dalla soluzione proposta se usata impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare la soluzione in files importanti.
--
Mauro Gamberini - Microsoft© MVP(Excel)