eliminare riga



  • eliminare riga
    di Ewihon (utente non iscritto) data: 25/10/2017 08:52:42

    ragazzi scusate ma sono veramente newbi

    sto facendo un file excel che mi deve fare 2 cose:

    a) deve cancellare intere righe il giorno dopo la data di scadenza (avevo provato con una cosa che posto dopo ma mi sono accorto che dopo un tot di cancellazioni non va piu)

    b) deve essere tutto formattato con il calibri, 11 e maiuscolo... per le prime due non ho avuto problemi la terza tante difficoltà

    ps ho 4 fogli quindi lo dovrei fare nell'intera cartella di lavoro

    grazie per l'aiuto che potreste darmi ciao ale
     
    Sub Auto_open()
    Dim ur As Integer
    With Worksheets("Venezia")
    ur = .Cells(Rows.Count, 6).End(xlUp).Row
    For n = ur To 2 Step -1
    If .Cells(n, 6).Value < mydate Then
    .Cells(n, 6).EntireRow.Delete
    End If
    Next n
    End With
    With Worksheets("Chioggia")
    ur = .Cells(Rows.Count, 7).End(xlUp).Row
    For n = ur To 2 Step -1
    If .Cells(n, 7).Value = "X" Then
    .Cells(n, 7).EntireRow.Delete
    End If
    Next n
    End With
    With Worksheets("Jesolo")
    ur = .Cells(Rows.Count, 7).End(xlUp).Row
    For n = ur To 2 Step -1
    If .Cells(n, 7).Value = "X" Then
    .Cells(n, 7).EntireRow.Delete
    End If
    Next n
    End With
    With Worksheets("Caorle")
    ur = .Cells(Rows.Count, 7).End(xlUp).Row
    For n = ur To 2 Step -1
    If .Cells(n, 7).Value = "X" Then
    .Cells(n, 7).EntireRow.Delete
    End If
    Next n
    End With
    With Worksheets("Venezia").Range("A3:F500")
    With .Font
    .Name = "Calibri"
    .Bold = False
    .Size = 11
    End With
    End With
    With Worksheets("Chioggia").Range("A3:F500")
    With .Font
    .Name = "Calibri"
    .Bold = False
    .Size = 11
    End With
    End With
    With Worksheets("Jesolo").Range("A3:F500")
    With .Font
    .Name = "Calibri"
    .Bold = False
    .Size = 11
    End With
    End With
    With Worksheets("Caorle").Range("A3:F500")
    With .Font
    .Name = "Calibri"
    .Bold = False
    .Size = 11
    End With
    End With
    End Sub



  • di Zer0Kelvin data: 25/10/2017 11:13:24

    Ciao.
    Temo che l'unico modo per rendere maiuscolo il contenuto delle celle sia usare la funzione UCase per ogni cella.
    Fai una prova col codice che allego sotto; ho provato a renderlo un pò più sintetico.
    Una domanda: da dove viene la variabile mydate?
    Poi un paio di consigli:
    -usa l'indentazione quando scrivi il codice, lo rende molto più leggibile.
    -le variabili destinate a contenere valori di Riga o Colonna è bene che siano di tipo long (Integer non è abbastanza "capiente", può contenere al massimo valori fra -32.768 e 32.767)
    -se devi far eseguire il codice all'apertura della cartella, non usare la macro Auto_Open, che è obsoleta. Devi usare Workbook_Open che devi inserire nel modulo di codice del Workbook.
    -dichiara sempre TUTTE le variabili che usi.  
     
    Private Sub Workbook_Open()
    Dim UR As Long, N As Long, Colonna As Long
    Dim shName As Variant, Cella As Range, Cancella As Boolean
    For Each shName In Array("Venezia", "Chioggia", "Jesolo", "Caorle")
        If shName = "Venezia" Then Colonna = 7 Else Colonna = 6
        With Sheets(shName)
            UR = .Cells(Rows.Count, Colonna).End(xlUp).Row
            For N = UR To 2 Step -1
                If shName = "Venezia" Then
                    Cancella = .Cells(N, Colonna).Value < mydate
                Else
                    Cancella = .Cells(N, Colonna).Value = "X"
                End If
                If Cancella Then
                    .Cells(N, Colonna).EntireRow.Delete
                End If
            Next N
            With .Range("A3:F500").Font
                .Name = "Calibri"
                .Bold = False
                .Size = 11
            End With
            For Each Cella In .Range("A3:F500").Cells
                Cella.Value = UCase(Cella.Value)
            Next Cella
        End With
    Next shName
    End Sub


  • eliminare riga
    di Ewihon (utente non iscritto) data: 25/10/2017 11:56:25

    ciao non mi funziona.
    If shName = "Venezia" Then Colonna = 7 Else Colonna = 6 perchè?

    poi mydate l'ho trovato su internet non so se è giusto

    cmq ho visto che hai messo che o è minore di my date o uguale a X... quella dell'X era una soluzione che avevo trovato perchè non capivo come farlo.

    ho bisogno di eliminare le righe con la data di scadenza al giorno di ieri
    per il resto maiuscolo e altro tutto ok. quello del maiuscolo e del calibri se dovessi farlo per quanto è lungo il foglio dovrei usare il range con sheets direttamente?




  • di Zer0Kelvin data: 25/10/2017 13:14:45

    Il valore di Colonna l'ho preso dal tuo codice, ti riferisci alla colonna 7 per tutti i fogli tranne che per il foglio Venezia, dove usi la colonna 6; ora mi sebra di capire che è perchè la colonna 6 contiene le date e nella colonna 7 hai inserito le "X", giusto?
    Devi cancellare solo le righe del giorno precedente o tutte quelle che hanno una data antecedente?
    Devi rendere in maiuscolo tutte le celle del foglio?
    La macro deve essere eseguita automaticamente all'apertura del file?


  • eliminare riga
    di Ewihon (utente non iscritto) data: 25/10/2017 13:36:08

    scusa quello era un foglio test e quindi mi è rimasto qualche errore.
    si il giorno dopo la data di scadenza deve in automatico eliminare quella riga;
    si in realta vorrei la formattazione maiuscolo, calibri 11 sia uguale sempre purtroppo questo file lo riempiranno un sacco di persone e quindi vorrei un'uniformità;
    e vorrei che il tutto sia eseguito quando si apre il file.

    ciao e grazie ...

    sto cercando d'imparare e piano piano sto studiando...
    ma alcune cose son ancora difficilissime per me




  • di Zer0Kelvin data: 26/10/2017 10:24:13

    Ti allego il codice che dovresti usare.
    Fai le prove sempre su una copia del file.
    Potrebbe non funzionare (se si verifica un errore, indica il n°, la descrizione e la riga dell'errore) se per es. la cella(N,6) non viene riconosciuta come data.
    Devi inserire il codice nel modulo del Workbook: doppio click su Questa_cartella_di_lavoro ed incolli. 
     
    Private Sub Workbook_Open()
    Dim UR As Long, N As Long, Calculation As XlCalculation
    Dim shName As Variant, Cella As Range
    'le prossime tre istruzioni servono a velocizzare l'esecuzione
    Calculation = Application.Calculation 'salva la modalità di ricalcolo
    Application.Calculation = xlCalculationManual 'disabilita ricalcolo automatico
    Application.ScreenUpdating = False 'disabilita l'aggiornamento della schermata
    For Each shName In Array("Venezia", "Chioggia", "Jesolo", "Caorle")
        With Sheets(shName)
            UR = .Cells(Rows.Count, 6).End(xlUp).Row
            For N = UR To 2 Step -1
                If CDate(.Cells(N, 6).Value) < Date Then
                    .Cells(N, 6).EntireRow.Delete
                End If
            Next N
            For Each Cella In .UsedRange.Cells 'tutte le celle utilizzate nel foglio
                Cella.Value = UCase(Cella.Value) 'trasforma in maiuscolo
                With Cella.Font
                    .Name = "Calibri"
                    .Bold = False
                    .Size = 11
                End With
            Next Cella
        End With
    Next shName
    Application.Calculation = Calculation 'ripristina modalità di ricalcolo
    Application.ScreenUpdating = True 'ripristina aggiornamento schermata
    End Sub


  • eliminare riga
    di Ewihon (utente non iscritto) data: 30/10/2017 12:02:57

    mi da errore sulla riga data . allego file cosi lo vedi.



  • di Zer0Kelvin data: 30/10/2017 14:11:38

    Con un piccolo sforzo ci potevi arrivare da solo.
    Nella mia risposta precedente ho anche scritto:
    Potrebbe non funzionare... se per es. la cella(N,6) non viene riconosciuta come data.

    For N = UR To 2 Step -1
    If CDate(.Cells(N, 6).Value) < Date Then

    Il ciclo viene ripetuto anche per la riga 2, ma la riga 2 contiene le intestazioni.
    Quindi l'istruzione
    CDate(.Cells(N, 6).Value)
    cerca di convertire in data la stringa "Scadenza", il che provoca un errore.
    Ho aggiunto un controllo per evitare futuri errori di questo tipo.
     
    Private Sub Workbook_Open()
    Dim UR As Long, N As Long, Calculation As XlCalculation
    Dim shName As Variant, Cella As Range
    'le prossime tre istruzioni servono a velocizzare l'esecuzione
    Calculation = Application.Calculation 'salva la modalità di ricalcolo
    Application.Calculation = xlCalculationManual 'disabilita ricalcolo automatico
    Application.ScreenUpdating = False 'disabilita l'aggiornamento della schermata
    For Each shName In Array("Venezia", "Chioggia", "Jesolo", "Caorle")
        With Sheets(shName)
            UR = .Cells(Rows.Count, 6).End(xlUp).Row
            For N = UR To 3 Step -1
                If IsDate(.Cells(N, 6).Value) Then
                    If CDate(.Cells(N, 6).Value) < Date Then
                        .Cells(N, 6).EntireRow.Delete
                    End If
                End If
            Next N
            For Each Cella In .UsedRange.Cells 'tutte le celle utilizzate nel foglio
                Cella.Value = UCase(Cella.Value) 'trasforma in maiuscolo
                With Cella.Font
                    .Name = "Calibri"
                    .Bold = False
                    .Size = 11
                End With
            Next Cella
        End With
    Next shName
    Application.Calculation = Calculation 'ripristina modalità di ricalcolo
    Application.ScreenUpdating = True 'ripristina aggiornamento schermata
    End Sub