Aggiungere TOT righe con macro
Hai un problema con Excel? 
Aggiungere TOT righe con macro
di pellamy88 (utente non iscritto) data: 28/03/2016 23:02:33
Ciao a tutti, oggi vi chiedo se sapete un modo molto piu veloce e diretto per fare ciò che la macro riportata gia fa:
Nella cella "A1" è presente una formula CONTA RIGHE (di una tabella). Quindi la macro va ad aggiungere tante righe quanto è il numero in cella A1.
Vorrei una macro che anzichè andare a fare un ciclo FOR, andasse ad aggiungere direttamente con una sola istruzione TOT righe (prese dal numero presente in A1). Di quale codice ho bisogno ? E' possibile o devo per forza usare un ciclo FOR ? Grazie!
Dim i As Long
For i = 1 To Worksheets("FORM_ORDINE_APPROVAZIONE").Range("A1")
Range("A6").ListObject.ListRows.Add
Next i |
di Raffaele_53 data: 29/03/2016 00:45:02
Qualcosa del genere
Cosa intendevi per
>>>la protezione che non è disponibile quella "classica" di excel
Sub Macro1()
Rows(6 & ":" & 6 + Range("A1")).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End Sub |
di pellamy88 (utente non iscritto) data: 29/03/2016 01:03:20
Grazie Raffaele.. intendevo dire che se blocchi le celle di una tabella non puoi aggiungere righe.. ne eliminarle, perchè sono bloccate e protette.. Qunidi nel mio caso, nella quale ho bisogno di una tabella che possa essere "interattiva" e quindi è indispensabile aggiungere/rimuovere righe, non posso utilizzare la protezione che io ho chiamato "classica"..
di pellamy88 (utente non iscritto) data: 29/03/2016 01:14:22
Ciao Raffaele, ho provato questa macro in sostituzione di quella che avevo io con il ciclo FOR. Non so se sto sbagliando qualcosa io ma le righe che vengono aggiunte hanno un formato diverso da quello che c'era impostato nella tabella di base (vengono molto piu alte), inoltre anche il formato cambia, mentre l'ultimissima riga rimane con il formato che aveva di base la tabella..
di pellamy88 (utente non iscritto) data: 29/03/2016 01:21:51
penso che si possa risolvere mettendo anzichè copia il formato dala riga prima, da quella sotto.. perchè in pratica va ad aggiungere delle righe tra l'intestazione e la primissima riga disponibile della tabella, che è appunto gia presente. E dovrebbe prendere il formato da questa prima riga, sempre, e non ovviamente dall'intestazione.. Con il comando ListRows.Add, andava semplicemente ad inserire delle righe e quindi il formato, essendo una tabella, veniva uguale in automatico.. è possibile fare lo stesso ? : ) grazie
di Raffaele_53 data: 29/03/2016 03:07:17
Quel codice non esegue un ciclo for, lo fà in un'unica riga.
Ps ho messo >>>Rows(6 & ":" & 6 perchè tu hai usato Range("A6"). Se vuoi fallo sull'ultima riga. Con .... Dim UR
UR = Range("A" & Rows.Count).End(xlUp).Row
Puoi usare Rows(Ur & ":" & Ur +.....
Ps. Casomai allega un'allegato, comunque la protezione si può fare, però bisogna sapere cosa ci fai su quella tabella
di Pellamy88 (utente non iscritto) data: 29/03/2016 08:43:56
Ciao Raffaele, jl problema è che si tratta di una tabella, dove vannl inserite solo tot righe e si popola da sola di dati poiché ci sono dei cerca verticale.. Quindi mi basta aggiungere delle righe all interno della tabella (dove ogni volta ne ha una sola, la prima) ma deve mantenere la formattazione che c'è già nella prima riga.. Spero di essermi riuscito a spiegare :) poiché se l aggiungo dall ultima riga, la tabella non si popola di nuove righe.. Andrebbero aggiunte all interno..
di patel data: 29/03/2016 09:17:42
quante incomprensioni e quanto tempo perso quando non si vuole allegare un file di esempio da testare !
prova questa
Sub AggiungiRiga()
Dim E_oTbl As ListObject, Lr As Long
Set E_oTbl = ActiveSheet.ListObjects("Table") ' <<< correggi il nome della tabella
With E_oTbl
Lr = .ListRows.Count
LC = .ListColumns.Count
n1 = .ListRows(Lr).Range(1)
.ListRows.Add alwaysinsert:=True
With .ListRows(Lr + 1)
For c = 1 To LC
.Range(c) = n1 + c
Next
End With
End With
Set E_oTbl = Nothing
End Sub |
di pellamy88 (utente non iscritto) data: 29/03/2016 11:40:55
Ti ringrazio patel però il mio obbiettivo era proprio quello di non utilizzare un ciclo for, ma un istruzione che aggiungesse instantaneamente il numero di righe desiderato. Ad esempio se ho da aggiungere 100 righe per popolare la tabella, con un ciclo for me ne aggiunge una ad una e ne vedo anche il procedimento, e questo porta via del tempo.. mentre con un istruzione diretta, aggiunge istantaneamente il numero di righe necessarie. La query di Raffaele secondo me va bene ma c'è solo un problema di formattazione di destinazione..poichè va ad aggiungere perfettamente il numero di righe ma prende la formattazione dell'intestazione di tabella, anzichè la formattazione della prima riga (unica disponibile della tabella prima di far funzionare la query)
di Raffaele_53 data: 29/03/2016 14:04:09
Scusa parli di una Tabella, quelle che si inseriscono e di solito sono azzure ed azzurine. Oppure Ti sei creato un'area di celle che Tu chiami tabella.
Avvia il registratore, copia la riga che desideri vai sotto, seleziona 4/5 righe piu le colonne della tabella e clicca su incolla (saranno incollate formule/formatti). Sposta almeno il codice, comunque senza un esempio visivo non so cosa fare
di pellamy88 (utente non iscritto) data: 29/03/2016 15:32:20
Ciao raffaele, con Tabella intendo proprio lo strumento "tabella" di excel, ovvero su home "formatta come tabella", quella azzurrina che intendi tu esattamente (che comunque puoi scegliere diversi stili di formattazione).
Essendo una tabella, nel momento in cui ad esempio in colonna A, riga 2 della tabella, inserisci qualcosa, automaticamente sulla destra, quindi sulle colonne e celle adiacenti, si auto-formatta tutto quanto con formule e formato. E' proprio questo il vantaggio e la comodità delle tabelle..
Questa tabella in particolare, parte con una sola riga ed è collegata a dei dati su un altro foglio. Nel momento in cui nell'altro foglio inserisco TOT righe piene di valori, cliccando poi sulla macro descritta in questo post, va ad aggiungermi nella tabella tante righe quante ne ho scritte nell'altro fogio. Quindi non va a copiare nulla, poichè fa gia tutto la tabella automaticamente.
Tutto ciò di cui ho bisogno è che la macro inserisca tot righe senza andare a cambiare nient'altro all'interno della tabella, poichè fa gia tutto in automatico... Grazie, e scusa se non posto il file, è troppo grande e dovrei farne uno da zero, popolarlo di qualche dato e via dicendo.. spero di aver descritto al meglio comunque la situazione!
di Raffaele_53 data: 29/03/2016 16:51:38
Sarà, solo un minuto di buona volonta ed ecco un esempio (senza tante parole)
Vuoi Approfondire?