|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Dec 1999
Città: Ostia/Padova
Messaggi: 1024
|
Problema macro in Excel
In un foglio Excel ho fatto una macro che effettua dei calcoli sulle
varie cartelle che lo compongono. Il problema è questo: In una delle cartelle ho un numero di righe che può variare di volta in volta. Nella colonna "E" c'è il progressivo di riga, quindi nella macro ho inserito Dim Indx As Integer Range("F1").Select ActiveCell.FormulaR1C1 = "=MAX(C[-1])" Indx = ActiveCell.Value A questo punto mi ritrovo in Indx il numero di righe che ho effettivamente valorizzate. Come faccio a selezionare tutte, e solo!!!!, le righe valorizzate? All'inizio sapendo che non avrò mai più di 10000 righe avevo fatto Range("A1:E10000").Select ma vorrei perfezionare la cosa. Ho provato con Range("A1:EIndx").Select Ma in esecuzione prendo l'errore Metodo 'Range' dell'oggetto '_Global' non riuscito ![]() Grazie e a buon rendere !! Ultima modifica di peppequo : 18-12-2003 alle 09:30. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
|
Re: Problema macro in Excel
alla spicciolata
se lo converti a questo modo se a posto Range(Cells(1, 1), Cells(10, 10)).Select |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Dec 1999
Città: Ostia/Padova
Messaggi: 1024
|
Se utilizzo la tua formula così come l'hai scritta funziona ma se io sostituisco uno dei valori con una variabile mi dà errore.
Altri suggerimenti??? ![]() |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Oct 2001
Città: Dublino
Messaggi: 878
|
selection.end(xlDown).select
restituisce il "fine-giù", praticamente tu ti posizioni su A1, esegui il comando qua sopra, a questo punto il codice ti porta nell'ultima casella della colonna A che è stata "riempita". Per intercettare questa casella, puoi usare il comando: activeCell.row che rappresenta la riga corrente, oppure puoi provare a usare l'espressione: .UsedRange per selezionare l'area corrente di lavoro, se vuoi domani posso fornirti qualche esempio, ciao ![]() |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Dec 1999
Città: Ostia/Padova
Messaggi: 1024
|
Te ne sarei grato, grazie.
Nel frattempo provo con quanto mi hai detto. |
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
|
Quote:
l'importante è l'idea; poi è sufficiente unire quanto espresso da robnet77 ed il tutto diventa: Codice:
rigaultimacella = activeCell.row colonnaultimacella = activeCell.col Range(Cells(1, 1), Cells(rigaultimacella , colonnaultimacella )).Select ok ? |
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Oct 2001
Città: Dublino
Messaggi: 878
|
ti riporto una parte di una macro che ho fatto tempo fa, è commentata il minimo indispensabile, ma penso ti sia sufficiente, eventualmente chiedi pure, anche se non sono certo un esperto di programmazione, ciao
![]() Codice:
'rintraccia l'ultima riga del foglio di lavoro Range("a1").Select Selection.End(xldown).Select UltimaRiga = ActiveCell.Row 'cerca verticale e copia formula nelle celle in basso Range("O2").Select ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-10],nover.xls!nover,2,FALSE)" Selection.Copy Range("O3", "O" & UltimaRiga).Select ActiveSheet.Paste Application.CutCopyMode = False 'ordina dati per colonna "O" decrescente, per mettere i "NO" in fondo Cells.Select Range("D1").Activate Selection.Sort Key1:=Range("O2"), Order1:=xlDescending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom 'trova il primo "NO" tra i valori nella colonna "O" Columns("O: O").Select Range("O97").Activate Selection.Find(What:="no", After:=ActiveCell, LookIn:=xlValues, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False).Activate PrimarigaNo = ActiveCell.Row Selection.End(xldown).Select UltimarigaNo = ActiveCell.Row Range("A" & PrimarigaNo, "O" & UltimarigaNo).Select Selection.Delete shift:=xlUp |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Oct 2001
Città: Dublino
Messaggi: 878
|
Columns("O: O").Select
nella riga che ho riportato qua sopra, ho aggiunto uno spazio dopo aver postato, visto che il codice VB lo aveva interpretato come una faccina ![]() p.s. ma non è possibile escludere le faccine dai tag [code]? ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:49.