Macro concatenzazione



  • Macro concatenzazione
    di SC91 (utente non iscritto) data: 04/12/2017 10:43:56

    Ciao, sono alle prime armi con VBA e creando una macro non capisco dove sbaglio. Spero qualcuno riesca ad aiutarmi.

    Vi spiego un esempio di ciò che farebbe la macro:
    ho 2 cartelle (oppure potrei metterle in fogli diversi se venisse più facile) excel, in una ho una lista di cognomi x esempio, nell'altra una lista di marche di auto.
    Quello che devo fare: Devo scrivere accanto ad ogni famiglia (tutto in una cella) che tipo di auto hanno, selezionandole dalla lista presente nell'altro foglio. Inoltre, accanto ad ogni marca di auto devo scrivere il cognome della famiglia che le possiede.
    Ma il tutto deve essere collegato, cioè: se ho sbagliato a scrivere un cognome e lo correggo, devo correggerlo solo nella lista e non pure nell'altra cartella/foglio dove c'è la lista delle auto.

    In sostanza: devo concatenare più celle assieme in un'altra cella di un altro foglio o cartella, mantenendo i riferimenti ed evitando di fare ogni volta CONCATENA(A7; ", "; etc; etc..) oppure A7 & ", " & etc manualmente.

    Il problema: la macro che utilizzo lavora bene, ma solo sul foglio dove voglio avvenga la concatenazione. Cioè seleziono nel foglio1 la cella dove voglio venga fatta la concatenazione, poi mi chiede di selezionare le celle che voglio concatenare e seleziono sempre nel foglio 1 le celle e la macro le concatena mantenendo il riferimento alle celle.. MA, se la cella dove voglio venga fatta la concatenazione sta nel foglio 1, e le celle che seleziono per la concatenazione si trovano su un foglio2, la macro le concatena, ma in realtà elimina il riferimento al foglio2, e concatena il contenuto delle celle che si trovano sul foglio1 nella stessa posizione.

    Per quanto riguarda la selezione in celle che si trovano su un'altra cartella, la macro non me lo fa fare proprio.

    Spero di essermi spiegata bene, ho allegato il codice della macro. Grazie mille a chiunque mi aiuterà a capire il problema.
     
    Sub JoinC()
    
    Dim rSelected As Range
    Dim c As Range
    Dim sArgs As String
    Dim bConcat As Boolean
    Dim bOptions As Boolean
    Dim sArgSep As String
    Dim sSeparator As String
    Dim rOutput As Range
    Dim lTrim As Long
    Dim sTitle As String
    
    
        'Set variables
        Set rOutput = ActiveCell
        bConcat = False
        bOptions = False
        sSeparator = ", "
        sTitle = "Join"
            
        'Prompt user to select cells for formula
        On Error Resume Next
        Set rSelected = Application.InputBox(Prompt:= _
                        "Select cells to create formula", _
                        Title:=sTitle & " Creator", Type:=8)
        On Error GoTo 0
        
        'Only run if cells were selected and cancel button was not pressed
        If Not rSelected Is Nothing Then
            
            'Set argument separator for join formula
            sArgSep = "&"
            
            'Create string of cell references
            For Each c In rSelected.Cells
                sArgs = sArgs & c.Address & sArgSep
                
                '& ActiveSheet.Name
                If sSeparator <> "" Then
                    sArgs = sArgs & Chr(34) & sSeparator & Chr(34) & sArgSep
                End If
            Next
            'Trim extra argument separator and separator characters
            lTrim = 4 + Len(sSeparator) ' IIf(sSeparator <> "", 4 + Len(sSeparator), 1)
            sArgs = Left(sArgs, Len(sArgs) - lTrim)
    
            'Create formula
                rOutput.Formula = "=" & sArgs
        End If
    End Sub



  • di patel data: 04/12/2017 11:57:46

    allega un file di esempio





  • di SC91 (utente non iscritto) data: 04/12/2017 12:35:02

    Allegato.. Credo XD.. Ovviamente quello che vorrei l'ho scritto a mano perchè la Macro non agisce in due fogli come vorrei


  • Risolto per i fogli
    di SC91 (utente non iscritto) data: 04/12/2017 15:52:23

    Risolto se i fogli si trovano sulla stessa cartella.. altrimenti no. La cartella non me la apre proprio, non mi da modo di selezionarla.



  • di patel data: 04/12/2017 18:16:02

    chiaramente prima dovrai aprire da codice l'altro file e poi adattare il tuo codice facendo riferimento al nuovo workbook





  • di SC91 (utente non iscritto) data: 05/12/2017 07:50:53

    Al momento non ho idea su come fare. ci proverò



  • di patel data: 05/12/2017 08:41:04

    puoi usare il registratore