dieta



  • dieta
    di stefanmi data: 01/09/2013 09:37:11

    volendo smaltire questo codice come si potrebbe fare?
     
    Sub taglia_colonne()
    '
    ' taglia_colonne Macro
    '
    
    '
        Columns("A:W").Select
        Selection.Delete Shift:=xlToLeft
        Columns("B:D").Select
        Selection.Delete Shift:=xlToLeft
        Columns("C:D").Select
        Selection.Delete Shift:=xlToLeft
        Columns("D:H").Select
        Selection.Delete Shift:=xlToLeft
        Columns("H:I").Select
        Selection.Delete Shift:=xlToLeft
        Columns("I:K").Select
        Selection.Delete Shift:=xlToLeft
        Columns("N:N").Select
        Selection.Delete Shift:=xlToLeft
        Range("Tabella1[[#Headers],[trimborso8]]").Select
        ActiveCell.FormulaR1C1 = "trimborso7"
        Range("N2").Select
    End Sub



  • di Vecchio Frac data: 01/09/2013 10:00:34

    Smaltire?
    - seleziona tutto
    - premi Canc

    ^_^ (del resto si chiama "taglia_colonne")


    LOL... sto scherzando naturalmente.
    Generalmente non serve fare il Select prima di un comando di azione su range.
    Es.: Columns("A:W").Delete Shift:=xlToLeft

    E poi credo che potresti accorpare tutti i range; ad esempio (leggendo al volo il tuo codice):
    [A:D].EntireColumn.Delete Shift:=xlToLeft
    e via così. Da provare ^_^





  • di stefanmi data: 01/09/2013 13:59:12

    naturalmente dovrei fare così per ogni colonna, se invece le volessi cancellare assieme ? ho provato con questa ma mi da errore, naturalmente avrà ragione il VBA ma dove sbaglio?
     
    ["B:B,D:D,F:F,H:H,J:J,L:L"].EntireColumn.Delete Shift:=xlToLeft



  • di isy data: 01/09/2013 14:13:56

    Ciao

    Se scrivi: Range("B:B", "D:D").EntireColumn.Delete Shift:=xlToLeft
    Elimini tutte le colonne nel range "B:D"

    Per la tua richiesta si possono eliminare più colonne in questo modo.
    Scrivi così:
     
    Range("B:B,D:D,F:F,H:H,J:J,L:L").Delete Shift:=xlToLeft



  • di stefanmi data: 01/09/2013 15:57:58

    grazie, sempre precisi e veloci



  • di Vecchio Frac data: 01/09/2013 18:28:51

    L'errore (di sintassi) di stefanmi era semplicemente che indicava le virgolette nella notazione a parentesi quadre.

    Sbagliato:
    ["A:A"]
    Giusto:
    [A:A]





  • di stefanmi data: 01/09/2013 20:12:21

    Vecchio Frac, quindi le [] sostituiscono la parola Range?



  • di totygno71 (utente non iscritto) data: 01/09/2013 20:28:56

    Scusasse... ma il titolo "dieta" che c'Azzecca?



  • di stefanmi data: 01/09/2013 23:56:10

    volevo far dimagrire la macro, in termini di righe



  • di Vecchio Frac data: 02/09/2013 10:55:26

    cit. "Vecchio Frac, quindi le [] sostituiscono la parola Range?"
    ---> Semplificando (banalizzando) è così.
    In realtà la notazione a parentesi quadre sta per la parola chiave Evaluate che indica a VBA di valutare l'espressione tra virgolette e restituire il risultato. Attenzione: non vale per Access, in cui le parentesi quadre hanno un'altro utilizzo (indicano un campo di tabella).
    Si può utilizzare questa notazione per abbreviare il codice da scrivere o anche al posto di Worksheet.Function perchè vi si possono scrivere formule come se le immettessimo in una cella di Excel per ottenere il risultato calcolato.

    Qualche esempio:
    Evaluate("2+3") produce 5.
    [2+3] produce 5.
    Range("A1") si riferisce alla cella A1.
    [A1] parimenti si riferisce alla cella A1.
    Worksheetfunction.Sum("A1:A10") produce il risultato della somma delle celle tra A1 e A10.
    [SUM(A1:A10)] fa la stessa cosa (è come la funzione =SOMMA scritta in una cella di Excel; ma non si può scrivere nella traduzione localizzata in italiano, si deve usare la corrispondente funzione inglese).





  • di stefanmi data: 02/09/2013 17:50:35

    grazie