Foglio variabile



  • Foglio variabile
    di pierof. (utente non iscritto) data: 29/11/2012 10:08:02

    Un saluto a tutti , ho da conseguire il seguente obbietivo ho due fogli di lavoro in due cartelle diverse con una userform2 in Cartel1 inserisco un nuovo foglio nella cartel1, sempre tramite la userform2 , nella cartel2 ove risiede una tabella inserisco una nuova riga con le prime due celle che corrispondono rispettivamente a
    [A1]= text.box1.text
    [A2]= text.box2.text
    la terza cella della nuova riga dovrebbe corrispondere a questa istruzione di codice, che non funziona,
    [A3].select
    ActiveCell.FormulaR1C1 = ""='[Cartel1.xlsm].NomeFoglio'!R4C6""
    dove
    NomeFoglio =UserForm2.TextBox3.Text

    In poche parole se immetto il nome di un foglio già esistente l'istruzione funziona mentre con NomeFoglio che cambia ad ogni nuovo inserimento non funziona.
    Potete aiutarmi, se servono altre info chiedete pure, un ringraziamento a tutti e saluti da Pierof.




  • di pierof. (utente non iscritto) data: 29/11/2012 17:28:02

    Nel frattempo usando il registratore di macro ho risolto in quest'altro modo vedi codice.
    Ma sarei curioso di sapere e capire perchè con il primo metodo non riesco ad ottenere il collegamento nella cella desiderata
     
    Windows("Cartel1.xlsm").Activate
         Sheets(NomeFoglio).Select
         Range("F4").Select
    Selection.Copy
        Windows("Cartel2.xlsm").Activate
         [C4].Select
        ActiveSheet.Paste Link:=True
    
    'e nella cella ottengo quello che volevo= [Cartel1.xlsm]NomeFoglio'!$F$4



  • di Vecchio Frac data: 29/11/2012 21:16:06

    Ci sono troppe virgolette.
    Dovrebbe essere:
    ActiveCell.FormulaR1C1 = "='[Cartel1.xlsm].NomeFoglio'!R4C6"
    e allora funziona.





  • di pierof. (utente non iscritto) data: 30/11/2012 12:52:41

    da Vecchio Frac,
    Ci sono troppe virgolette.
    Dovrebbe essere:
    ActiveCell.FormulaR1C1 = "='[Cartel1.xlsm].NomeFoglio'!R4C6"
    e allora funziona.

    Grazie per la risposta Vecchio Frac,
    ho provato come hai detto ma lo stesso non và ora inserisco il codice per intero con l'evento che richiama la macro e già che ci sei se mi rivedi le istruzioni se sono scritte correttamente o si potrebbe scrivere diversamente (sicuramente l'indentatura) comunque anche scritta così funziona tranne qualche passaggio a cui ho ovviato diversamente, ciao saluti a tutti da pierof.

     
    'La Userform2 è posta nel file aperto e attivo "MastrCliSeir.xlsm"
    Private Sub CommandButton1_Click()
    Application.ScreenUpdating = False '2 serve per evitare i saltellamenti a schermo
    Dim y, NomeFoglio As String
    
    Verifica_se_file_aperto 'MACRO che apre file"TabRiepCliSeir" se chiuso
    Windows("TabRiepCliSeir. 2012.xlsm").Activate
    Sheets("mese").Activate 'apre foglio dove sono inseriti i mesi che servono da appoggio per la routine
    With ActiveSheet
    y = Range("C1").Value 'variabile che prende il nome del mese precedente a quello attuale
    End With
    Sheets(y).Activate
    With ActiveSheet
    Rows(4).Insert Row 'inserisco una riga vuota che successivam.popolerò con i dati della userform2
    NomeFoglio = TextBox2.Text 'nome del nuovo foglio del nuovo cliente
    CodCli = trova_num(TextBox1.Text) 'la funzione trova_num mi estrapola i numeri es.da (C/1234)cod.cli> 1234
    [A4].Value = CodCli '(TextBox1.Text) ' codice cliente
    [B4].Value = TextBox3.Text 'nominativo cliente
    [B4].Select
    'inserisco colleg.ipert.a foglio di altro file ("TabRiepCliSeir. 2012.xlsm") 
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="MastrCliSeir.xlsm" _
            , SubAddress:="NomeFoglio!A1", TextToDisplay:=[B4].Value 
                ', SubAddress:="[B4].value!A1", TextToDisplay:=[B4].Value
        Selection.Font.Underline = xlUnderlineStyleNone
     
    End With
    Windows("MastrCliSeir.xlsm").Activate
    Sheets("1fac-simile").Select 'seleziono il primo foglio della cartella
    Sheets("1fac-simile").Copy Before:=Sheets(1) 'inseris.prima del fgl.una copy dello stesso
    [A6].Select
     Selection.Copy
     'nel foglio "1fac-simile" nella cella "A6" c'è la funz.ANNO=(OGGI())che estrapola l'anno dalla
     'data odierna in modo che gli anni successivi nella cella c'è sempre scritto l'anno di partenza giusto
     'con il copia/incolla successivo elimino la funzione nella nuova scheda cliente e rimane l'anno
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    Sheets(1).Name = UserForm2.TextBox2.Text ''attribuisco un nuovo nome al nuovo fgl 
    Sheets(1).[A3] = UserForm2.TextBox1.Text & UserForm2.TextBox3.Text
    
    'DA CORREGGERE SOTTO
    Windows("TabRiepCliSeir. 2012.xlsm").Activate 'NON FUNZIONA
    [C4].Select 'NON FUNZIONA
    With ActiveCell.FormulaR1C1 = "='[MastrCliSeir.xlsm].NomeFoglio'!R4C6" 'collegamento non funziona
    End With 'NON FUNZIONA
    
        'SOTTO FUNZIONA L'INSERIMENTO DEL COLLEGAMENTO AL VALORE DELLA CELLA DELL'ALTRO FOGLIO
        Windows("MastrCliSeir.xlsm").Activate
         Sheets(NomeFoglio).Select
         Range("F4").Select
    Selection.Copy
        Windows("TabRiepCliSeir. 2012.xlsm").Activate
        Sheets(y).Activate
         [C4].Select
        ActiveSheet.Paste Link:=True
    Application.CutCopyMode = False 
    
    'Run "TabRiepCliSeir. 2012.xlsm!OrdinaAlfabet" 'macro che non si avvia ordina in ord.alfab.i cli nella "TabRiepCliSeir"
    'Run OrdinaAlfabet'Macro originaria del file ("TabRiepCliSeir. 2012.xlsm") non si avvia
     Windows("MastrCliSeir.xlsm").Activate
    Sheets(NomeFoglio).Activate
    Unload Me
    Exit Sub
    End Sub