macro variabile



  • macro variabile
    di bcgeppo data: 08/03/2014 05:39:06

    Ciao a tutti, questa volta ho preparato un esempio su un file che allego "EsempioBC" lo scopo è quello di eseguire una macro e/o una formula dove i riferimenti anziche essere scritti in macro o sulla formula li vada a leggere su una cella.
    Es.
    A1= C (cella riservata alla variabile)
    B1= C1+D1 (risultato 3, il primo riferimento di colonna vorrei che fosse variabile in base a quanto scritto in A1)
    C1= 1
    D1= 2
    E1= 3
    ora se in A1 dovessi scrivere "E" il risultato di B1 dovrebbe essere "5" (E1+D1)
    Grazie Buona giornata



  • di Raffaele_53 (utente non iscritto) data: 08/03/2014 09:54:25

    Prova se va bene
     
    Sub Copia()
        Dim v As String, Val As Double
        Sheets("Foglio2").Columns("A:J").EntireColumn.Hidden = False
        v = Sheets("Foglio1").Cells(3, 1) & ":" & Sheets("Foglio1").Cells(3, 1)
        Val = Sheets("Foglio2").Range(Sheets("Foglio1").Cells(3, 1) & 15)
        Sheets("Foglio1").Range("D3") = Val
        Sheets("Foglio2").Columns(v).EntireColumn.Hidden = True
    End Sub



  • di bcgeppo data: 08/03/2014 12:00:48

    Funziona alla grande, ora è possibile anche far funzionare più pulsanti e di conseguenza piu righe con la stessa macro, in allegato il file esempio "EsempioBC_2" dove ci sono 4 pulsanti che fanno riferimento alla stessa macro il problema è che la cella di riferimento è sempre la stessa (3,1) dovrebbe andare a pescare il riferimento nella cella della stessa riga a sempre in colonna A.
    Ciao



  • di Raffaele_53 (utente non iscritto) data: 08/03/2014 13:09:54

    Dovrai fare 5 macro, alle quali darai un nome ben preciso:
    Ex Sub A() invece di .........Sub Macro()
    A questa non modifichi nulla.

    Dopo la copy e la incolli sotto, dandogli il nome Sub B()
    In questa devi modificare tre righe
    1)v = Sheets("Foglio1").Cells(3, 1) & ":" & Sheets("Foglio1").Cells(3, 1) con
    v = Sheets("Foglio1").Cells(4, 1) & ":" & Sheets("Foglio1").Cells(4, 1)

    2)Val = Sheets("Foglio2").Range(Sheets("Foglio1").Cells(3, 1) & 15)
    Val = Sheets("Foglio2").Range(Sheets("Foglio1").Cells(4, 1) & 15)

    3)Sheets("Foglio1").Range("C3") = Val
    Sheets("Foglio1").Range("C4") = Val

    Dopo ricrei le altre tre macro "Sub C(), Sub D(), Sub E() aumentando nelle tre righe 5/6/7



  • di mb (utente non iscritto) data: 08/03/2014 18:52:17

    buon pomeriggio
    ho fatto una modifica ma per un errore di sintassi non riesco a fare ciò che vorrei
    di compare errore
    desideravo mettere tipo frutto nella cella C3

    grazie



     
    Sub Macro1()
        Dim v As String, Val As Double, tipo As String
        Sheets("Foglio2").Columns("A:J").EntireColumn.Hidden = False
        v = Sheets("Foglio1").Cells(3, 1) & ":" & Sheets("Foglio1").Cells(3, 1)
        Val = Sheets("Foglio2").Range(Sheets("Foglio1").Cells(3, 1) & 15)
        tipo = sheets ("foglio2").Range (sheets("foglio1") .cells(3, 1) & 1) '  aggiunto da mb
        Sheets("Foglio1").Range("d3") = Val
        'Sheets("foglio1").Range("C3") = tipo  ' aggiunto da mb
        Sheets("Foglio2").Columns(v).EntireColumn.Hidden = True
    End Sub
    
    



  • di Raffaele_53 (utente non iscritto) data: 09/03/2014 22:43:31

    >>>v = Sheets("Foglio1").Cells(3, 1) & ":" & Sheets("Foglio1").Cells(3, 1)
    Significa = A:A

    Ora per chiudere una colonna la sintasi e questa
    Columns(A:A).EntireColumn.Hidden = True

    Di certo non capisco per quale motivo devi chiudere una colonna? Non la Puoi lasciare aperta e riportare con un'unico codice i totali nelle celle C3:C7?



  • di mb (utente non iscritto) data: 10/03/2014 08:44:34

    ciao
    certamente mi sono spiegato male

    nel file denominato esempio bc in colonna C trovo
    trovo la seguente formula =tabella2[[#Totali];[[mele]]

    ho l'impressione che il dato riportato in quella cella sarà sempre il totale di mele

    quello che desideravo fare era inserire la descrizione del prodotto in automatico nella cella C3

    concordo che il pezzo di procedura da te postato funziona ma desideravo solo inserire un ulteriore automatismo non avevo nessuna intezione di eliminare la colonna C

    sicuramente non essendo esperto di VBA ho fatto un pasticcio nel voler adattare la tua Sub


    Grazie



  • di Raffaele_53 (utente non iscritto) data: 10/03/2014 15:00:55

    Non capisco il risultato che desideri ottenere.
    Se desideri avere sia la descrizione e la quantità nel foglio1.
    Basta solo una macro.
     
    Sub Copia()
    Dim Val As Double, X As Long, Uriga As Long, Col As Long, Colonna As Long
    Uriga = Sheets("Foglio2").Range("A" & Rows.Count).End(xlUp).Row
    Col = Sheets("Foglio2").Rows("1:1" & Columns.Count).End(xlToRight).Column
    Colonna = 1
        For X = 3 To Col + 3
            Sheets("Foglio1").Cells(X, 1) = Sheets("Foglio2").Cells(1, Colonna)
            Sheets("Foglio1").Cells(X, 3) = Sheets("Foglio2").Cells(Uriga, Colonna)
            Colonna = Colonna + 1
        Next X
    End Sub



  • di mb (utente non iscritto) data: 10/03/2014 16:09:10

    buon pomeriggio e grazie per l'attenzione
    mi space ma il file allegato
    EsempioBC versione raffaele.xlsm
    non esegue correttamente quanto richiesto

    ci riprovo

    va benissimo il file precedente ma nella cella C3 desidererei inserire il nome del prodotto

    quindi A3 = F
    b3 =punsante macro
    c3 = pane
    d3 = 10 ( quantità totale della colonna F)

    allego anche il mio file con ma sub contenente l'errore





  • di mb (utente non iscritto) data: 10/03/2014 16:10:10

    il file con la sub da correggere si chiama
    EsempioBC versione mb.xlsm
    grazie



  • di Raffaele_53 (utente non iscritto) data: 10/03/2014 17:07:50

    >>>se io andassi a scrivere "F" in cella A3 la macro dovrebbe nascondere la colonna del pane nel foglio2
    OK
    >>>la formula in C3 dovrebbe restituirmi il numero 10 che è il totale della colonna pane.
    Qui non capisco bene...

    Il primo codice lo faceva già, comuque leggendo il Tuo codice credo che.....
    Tu intenda dire in C3 il prodotto e in D3 là quantità. (vedi codice)
    Per sicurezza ho aggiunto una Riga = Uriga casomai un domani la tabella fosse più grande
     
    Sub Macro1()
        Dim v As String, Val As Double, Tipo As String, Uriga As Long
        Sheets("Foglio2").Columns("A:J").EntireColumn.Hidden = False
        Uriga = Sheets("Foglio2").Range("A" & Rows.Count).End(xlUp).Row
        v = Sheets("Foglio1").Cells(3, 1) & ":" & Sheets("Foglio1").Cells(3, 1)
        Val = Sheets("Foglio2").Range(Sheets("Foglio1").Cells(3, 1) & Uriga)
        Tipo = Sheets("foglio2").Range(Sheets("foglio1").Cells(3, 1) & 1)
        Sheets("Foglio1").Range("d3") = Val
        Sheets("foglio1").Range("C3") = Tipo
        Sheets("Foglio2").Columns(v).EntireColumn.Hidden = True
    End Sub
    



  • di mb (utente non iscritto) data: 10/03/2014 17:51:37

    grande Raffaele

    mi riesci a spiegare che differenza c'è che mi sfugge tra quanto da me scritto

    tipo = sheets ("foglio2").Range (sheets("foglio1") .Cells(3, 1) & 1)


    dove a me compare errore sintassi

    e quanto scritto da te

    Tipo = Sheets("foglio2").Range(Sheets("foglio1").Cells(3, 1) & 1)

    sono importanti le lettere maiuscole

    tipo Tipo oppure sheets e Sheets

    o mi sfugge ancora qualcosa


    a prescindere grazie perchè è proprio quello che desideravo ottenere
    alla prossima e scusami se non sono riuscito a farmi capire subito



  • di Raffaele_53 (utente non iscritto) data: 10/03/2014 18:18:02

    L'errore Tuo era lo spazio di troppo.....
    >>>tipo = Sheets("foglio2").Range(Sheets("foglio1") "spazio" .Cells(3, 1) & 15)
    No, excel appena riconosce la riga con sintasi corretta mette le maiuscole ed toglie eventuali doppi spazi



  • di mb (utente non iscritto) data: 10/03/2014 18:25:55

    grazie Raffaele
    mannaggia alle papere direbbe un mio amico