Inserire nuova riga sopra

Versione Completa   Stampa   Cerca   Utenti   Iscriviti     Condividi : FacebookTwitter
dap.1990
00mercoledì 9 marzo 2016 16:21
Ciao a tutti ….. io sono a digiuno di VBA, ho provato a cercare in questo bellissimo forum qualcosa che mi risolvesse il problema ma non ho trovato nulla.

vorrei fare alla macro questa operazione:
quando nella colonna “E” trova la frase “Collettore 1”o “Collettore2” o ”Collettore3” mi inserisca due riga prima una nuova riga vuota.

Esempio: quando la frase “Collettore 2” si trova in E25 inserisci la riga vuota in E22

C'è nessuno che sa indicarmi come devo fare?
Grazie
raffaele1953
00mercoledì 9 marzo 2016 16:31
Mà..., premesso che Collettore(spazio)1, sia differente da Collettore2 ecc ecc
Domanda se trova tutti tre (cosa deve fare), oppure Ti interessa solo ogni volta che trova "Collettore*" e metterci TOT righe avanti?
dap.1990
00mercoledì 9 marzo 2016 16:41
Ciao,mi basta che trovi collettore e mi metta la riga prima non dopo
raffaele1953
00giovedì 10 marzo 2016 08:43
Questo codice lo fà in automatico, quando scrivi Collettore in colonna E
Apri il file, vai sul foglio che desideri. Premi ALt+F11 e inseriscilo sullaa destra. Salva come XLSM
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("e:e")) Is Nothing Then
    Dim R
    R = Target.Row
    If R <= 2 Then Exit Sub
    Application.EnableEvents = False
        If Target.Offset(0, 0).Value Like "Collettore*" Then
            Range(Cells(R, 1), Cells(R, 100)).Insert
        End If
    Application.EnableEvents = True
End If
End Sub
dap.1990
00giovedì 10 marzo 2016 12:11
raffaele1953 prima di tutto ti ringrazio per la risposta.
Ho seguito le tue indicazioni ma quando faccio esegui Sub nel editor di VBA mi si apre la finestra delle macro ma il nome della macro non è presente
forse sbaglio in qualcosa. Un aiuto grazie
raffaele1953
00giovedì 10 marzo 2016 13:05
>>>ma quando faccio esegui Sub
Non capisco cosa hai fatto? Questo codice esegue automaticamente quand scri in colonna E. Allega un file dimostrativo.
dap.1990
00giovedì 10 marzo 2016 15:41
Invio il file e descrivo meglio il problema
Nella colonna E inserisco valori di testo mentre nella colonna F inserisco valori numerici. In corrispondenza dei valori “Collettore1”, “Collettore 2” e “Collettore 3” ho la somma parziale dei valori della colonna F, quindi ho tre intervalli, separati da una riga senza valori.
Nei tre intervalli aggiungerò righe ma anche le cancellerò.
Se cancello tutte le righe presenti in un intervallo perdo la funzione della somma
Per non perdere la funzione di “somma” ho pensato di creare una macro che mi inserisca ha richiesta una riga nuova sopra la voce “Collettore1”, “Collettore 2” e “Collettore 3” .
Le righe senza valori ( colorate di grigio) saranno protette contro la cancellazione.
Sono ben accettati i consigli.
Grazie ancora Raffaele
raffaele1953
00giovedì 10 marzo 2016 17:46
>>>saranno protette contro la cancellazione.
Intendo che tutta la procedura non termina con l'aggiunta di una sola riga. Vedo pure un =SOMMA() e presumo che ci saranno pure eventuali cancellazioni di righe....

>>>Sono ben accettati i consigli.
1) Hai cambiato totalmente il significato del codice
Non mi sembra una cosa valida, comunque questo gli fai un bottone e lo avvii ogni volta.Non inserisce nessuna riga, fà solo i totali.
Sub conta()
Dim Ur, X, Tot1 As Double, Tot2 As Double
Ur = Range("E" & Rows.Count).End(xlUp).Row
    For X = 2 To Ur
        If Cells(X, 5) Like "Collettore *" Then
            Cells(X, 6) = Tot1
            Tot1 = 0
        Else
            Tot1 = Tot1 + Cells(X, 6)
            If Cells(X, 5) = "Collettore" Then Cells(X, 6) = Tot2
            Tot2 = Tot2 + Cells(X, 6)
        End If
    Next X
End Sub


2) Non leggi bene>>>Apri il file, vai sul foglio che desideri. Premi ALt+F11 e inseriscilo sulla destra.
Significa NON in un MODULO

L'altra non poteva sommare a meno di modificarla radicalmente, comunque riallego pure
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("e:e")) Is Nothing Then
    Dim R
    R = Target.Row
    If R <= 2 Then Exit Sub
    Application.EnableEvents = False
        If Target.Offset(0, 0).Value Like "Collettore*" Then
            Range(Cells(R - 2, 1), Cells(R - 2, 100)).Insert
            Range(Cells(R - 2, 1), Cells(R - 2, 100)).RowHeight = 14.25
            Range(Cells(R - 1, 1), Cells(R - 1, 100)).RowHeight = 6
        End If
    Application.EnableEvents = True
End If
End Sub
dap.1990
00venerdì 11 marzo 2016 14:39
Buongiorno Raffaelle come vedi sono proprio ignaro di programmazione faccio addirittura confusione fra foglio e modulo,
pero piano piano addentrandomi nella materia comincio a prendere gusto.

La sub conta è stupenda per quello che devo fare.
E possibile farle fare in automatico la somma, magari a livello di foglio.
Ho provato il primo codice che fa bene l’inserimento delle righe ma quando ne cancello una poi non m’inserisce più nulla, non funziona, cosa sbaglio?
Io pensavo di aggiungere la riga tramite un commando senza dovere sempre inserire la voce “Collettore*”

Grazie per l’aiuto.
raffaele1953
00venerdì 11 marzo 2016 16:24
Sub conta() fà gia i totali in F23, dove legge in E23 la parola Collettore senza numero

Comunque meglio questa se devi anche cancellare e fa le somme. Se nelle colonne E/G fai doppio-click col mouse inserisce tre celle relative alla riga in E/G, se vuoi puoi anche eliminare
Da mettere nel foglio ALT & F11, Non un modulo.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("E:G")) Is Nothing Then
Dim R
R = Target.Row
Range(Cells(R, 5), Cells(R, 7)).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End If
End Sub
dap.1990
00domenica 13 marzo 2016 19:44
Grazie Raffaele per le macro

Saluti
Questa è la versione 'lo-fi' del Forum Per visualizzare la versione completa clicca qui
Tutti gli orari sono GMT+01:00. Adesso sono le 19:17.
Copyright © 2000-2024 FFZ srl - www.freeforumzone.com