› Sviluppare funzionalita su Microsoft Office con VBA › inserisci riga all'occorrenza
-
AutoreArticoli
-
Buongiorno e buona domenica,
avrei bisogno di creare una macro che inserisca 1 riga subito sotto a quella dove è scritto "S" nella colonna H, creando un command button.
Quindi, per esempio, se ho righe valorizzate partendo dalla 12 fino alla 20, ma il valore "S" è scritto fino ad H16, la macro mi deve inserire una nuova riga nella 17. In quest'ultima, infine, deve essere inserita la data di "oggi", sia nella colonna B che nella colonna D (nel mio esempio quindi in B17 e D17), il resto delle colonne deve essere vuoto.
Grazie in anticipo a chi mi vorrà aiutare, allego file esempio
Allegati:
You must be logged in to view attached files.Non riesco vedere il Foglio54, come hai fatto a farlo sparire?
Questo mettilo in foglio "prova" assieme ad Worksheet_Change, per inserire clicca due volta sull'ultima "S" (obbligatorio)
`Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Intersect(Target, Range("H11:H300")) Is Nothing Then Dim rR As Long Application.EnableEvents = False rR = Target.Row If Range("H" & rR) = "S" And Range("H" & rR + 1) = "" Then Rows(rR + 1 & ":" & rR + 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Range("B" & rR + 1) = Date Range("D" & rR + 1) = Date End If Application.EnableEvents = True End If End Sub`Ciao e grazie per i vostri suggerimenti, entrambi efficaci.
Ho adottato quello di LukeReds perché mi occorre il command button che poi abbino ad un tasto funzione.
Detto ciò, chiedo a LukeReds se cortesemente mi indica, ovviamente per favore, la stringa da aggiungere per far si che quando eseguo la macro, mi rimanga selezionata la cella della colonna b del rigo appena creato, e che nella colonna J, sempre del nuovo rigo, venga automaticamente scritto "N"
Grazie infinite
ciao, va aggiunta l'istruzione Range("B" & r).Select, se volessi selezionare un'altra cella basta cambiare la B e la r
Sub AggRiga() Dim r As Integer r = 1 + Range("H" & Rows.Count).End(xlUp).Row Application.EnableEvents = False Rows(r).Insert Range("B" & r) = Date: Range("D" & r) = Date Range("B" & r).Select 'SI POSIZIONA IN COLONNA B E RIGA r, appqna inserita Application.EnableEvents = True End Subciao, va aggiunta l'istruzione Range("B" & r).Select, se volessi selezionare un'altra cella basta cambiare la B e la r
ok grazie mille, ho provato ad aggiungere
Cells(UltimaRiga, "J").Value = "N"per scrivere automaticamente "N" ogni volta che aggiungo una nuova riga, ma mi da errore
Dove sbaglio ?
Ciao con Cella devi usare il numero di colonna e non la lettera
Non è così, prova nella finestra immediata:
?Cells(12, "J").addresse vedrai che restituisce l'indirizzo corretto,ciao, con cella puoi usare numeri o lettere per la colonna.
Cosa contiene ultimariga?
innanzitutto, ringrazio tutti voi per i suggerimenti !
Non so cosa sia la "finestra immediata" e di conseguenza quale indirizzo dovrebbe essermi restituito.
Cosa contiene ultimariga?
L'ultima riga contiene:
in colonna B e colonna D la data di oggi, mentre in colonna J c'è scritto "S"
Spero di aver risposto bene ovvero aver compreso la domanda.
Comunque, per eccesso di zelo, riporto il codice che attualmente ho che deve essere implementato con l'istruzione di scrivere "N" nella colonna J ogni volta che eseguo la macro
Sub InsAcconto() Dim r As Integer r = 1 + Range("H" & Rows.Count).End(xlUp).Row Application.EnableEvents = False Rows(r).Insert Range("B" & r) = Date: Range("D" & r) = Date Range("B" & r).Select 'SI POSIZIONA IN COLONNA B E RIGA r, appqna inserita Application.EnableEvents = True End Subboh non vedo ultimariga nel codice che hai ipostato
Comunque per scrivere N in colonna jprima di Application.enableevemts = true inserisci
Range("J" & r) = "N" oppure, con la notazione cells
Cells(r, "J").Value = "N"
Non so cosa sia la "finestra immediata"
https://www.google.com/search?q=excel+vba%2C+finestra+immediata&aqs=chrome..69i57.17795j0j1&ie=UTF-8
spero di non disturbare, e soprattutto non stuzzicare l'attenta osservazione alle discussioni da parte dei moderatori
ma credo che per chi ha necessità di risposte immediate,
google possa aiutare senza aspettare la disponibilità di un esperto sul forum
boh non vedo ultimariga nel codice che hai ipostato
perdonami ma io ho impostato il codice che mi hai scritto e suggerito tu stesso.
Non ho fatto altro che un copia/incolla perché, diversamente, non saprei come/cosa fare
spero di non disturbare
ma credo che per chi ha necessità di risposte immediate,
google possa aiutare senza aspettare la disponibilità di un esperto sul forum
dal mio canto nessun disturbo, ma tengo a farti notare che mi sono semplicemente limitato a rispondere e non a chiedere il significato di una cosa, che come altre svariate decine e decine di milioni, risulta anche a me che trovino risposta su Gooogle
negli anni, e ripeto, ripeto, ripeto negli anni,
molte e molte persone mi hanno aiutato, ma nessuna mi ha risolto un problema.
ho perso tempo ad applicare i suggerimenti che ho ricevuto aiutandomi con goole quando non riuscivo
a capire come utilizzarli.
mi piacerebbe sapere perhè tu non puoi fare la stessa cosa....
-
AutoreArticoli
