pulsante riporta foglio



  • pulsante riporta foglio
    di kko (utente non iscritto) data: 25/11/2013 10:37:56

    salve a tutti, vi chiedo gentilmente aiuto per un problema sicuramente banale ma per me quasi insormontabile se affrontato da solo, perche io sto alla programmazione excel/vba like a monkey on a rock...
    comunque, il mio problemino: ho una lunga serie di fogli in excel ed all'ultimo foglio vorrei creare una tabella con la lista dei fogli presenti e una sorta di "descrizione" per ogni foglio, con la possibilità di inserire su questa lista per ogni foglio un pulsante, che appunto al click mi manda direttamente al foglio di riferimento. ho cercato un po' su internet, ma su questo argomento sono proprio imbranato e tra il poco tempo e altri "doveri" da solo proprio non riesco.
    grazie



  • di Grograman data: 25/11/2013 11:00:49

    come consiglio sempre, impariamo a farlo lato foglio, poi passiamo al VBA.

    Ti allego esempio di coem inserire un collegamenti ipertestuale a un foglio della stessa cartella di lavoro.

    Ciao!



  • di Vecchio Frac data: 25/11/2013 11:05:11

    Anch'io ho pensato al collegamento ipertestuale.
    Il codice che ho prodotto è di otto righe, comprese le dichiarazioni :)
    Non interferisco e vediamo se kko sconfigge la scimmietta sulla roccia che crede di essere :)





  • di Grograman data: 25/11/2013 11:25:08

    cit: "Il codice che ho prodotto è di otto righe, comprese le dichiarazioni :) "


    Allora ne ho in canna uno di 8 comprese apertura e chiusura routine!

    Però è brutto forte...



  • di Grograman data: 25/11/2013 11:29:56

    Ridotto a 7 compreso "option explicit" ma sempre più incomprensibile!!



  • di Vecchio Frac data: 25/11/2013 11:34:31

    Eh no, così mi stuzzichi ^_^





  • di Grograman data: 25/11/2013 11:41:08

    cit: "Eh no, così mi stuzzichi ^_^"


    5 righe tutto compreso???



  • di Vecchio Frac data: 25/11/2013 11:57:09

    Ma vabbè, se togli le righe vuote e comprimi su una riga sola...
    Ok, risultato finale: due righe di codice compreso Option Explicit.
    Ma fa schifissimo ^_^





  • di Grograman data: 25/11/2013 11:58:53

    Doh allora mi hai battuto, io avevo già sacrificato l'intestazione obbligatoria delle variabili e le variabili stesse!

    E già il mio è osceno da leggere



  • di totygno71 (utente non iscritto) data: 25/11/2013 13:24:14

    Della serie vince chi lo ha più corto.... E VF vince abbondantemente sugli altri ^_^
    Ora però vogliamo tutti vederlo... su, su VF coraggio... faccelo vedè!!! ^_^



  • di Vecchio Frac data: 25/11/2013 13:51:26

    Ma secondo voi abbiamo intimidito il nostro interlocutore, kko? ^_^






  • di kko (utente non iscritto) data: 25/11/2013 14:22:19

    eccomi... sinceramente non ho capito un c****o...
    scherzo, ci avevo pensato ad un collegamento ipertestuale, è che volevo renderlo un po' più... un po più!
    ma evidentemente come tutte le cose più semplici sono meglio vanno...
    avrei un'altra domandina... :)
    è possibile rinominare un foglio in collegamento con una cella specifica (dello stesso foglio) o un metodo per rinominate automaticamente i fogli?
    e vi ringrazio intanto per le rapide risposte...



  • di Vecchio Frac data: 25/11/2013 14:28:01

    Intanto ecco il mio codice monoriga.
    Sono 315 caratteri :)
    Inutile dirvi che basta andare a capo in corrispondenza dei due punti.
    Se, come presumo, il parser del forum lo mostra su più righe, non preoccupatevi: copiate e incollate per capire cosa intendo :)

    La seconda domanda di kko, non l'ho capita :P
    Il modo per rinominare automaticamente i fogli esiste, è un semplice ciclo sui fogli in cui ci applichi il nuovo nome. Non so se era questo che intendevi.
     
    Option Explicit
    Sub crea_iperlinko(): Dim j As Integer, sh As Worksheet: For Each sh In ThisWorkbook.Sheets: Sheets("foglio3").Cells(j + 1, 1).Hyperlinks.Add Anchor:=Sheets("foglio3").Cells(j + 1, 1), Address:="", SubAddress:=sh.Name & "!$A$1", TextToDisplay:=sh.Name: j = j + 1: Next: Sheets("foglio3").Cells(j, 1).Clear: End Sub
    
    
    sub rinomina_fogli
    dim j as integer, sh as worksheet
        for each sh in thisworkbook.sheets
            j = j +1
            sh.name = "Nuovo foglio " & j
        next
    end sub






  • di kko (utente non iscritto) data: 25/11/2013 14:38:32

    mi spiego meglio...
    ho una serie di fogli (foglio 1, foglio 2,... foglio 52) ogni foglio riporta dati di un arco specifico di tempo (foglio 1: 05/01-12/02, ecc ecc); per il mio caso specifico mi sarebbe molto più comodo se questo arco di tempo che sono obbligato a scrivere in ogni foglio in una specifica cella, venisse riportato automaticamente come nome del foglio, così se dovessi creare un altro foglio farei "crea copia foglio" e compilandolo si autorinominasse...
    .....ecco, mi spiego proprio come un barbone! ma spero mi capiate.



  • di Grograman (utente non iscritto) data: 25/11/2013 14:49:00

    Iihihihihi l'unica riga di codice è splendida!
    Mi fa appannare la vista, ma splendida!

    Per l'ultima domanda posta, in che cella hai il dato di tempo?
    Tieni conto che la notazione 12/12/2012 non è utilizzabile per rinominar eun foglio, quindi dovrai scegliere il formato come 12-12-2012, 12122012 ecc.



  • di kko (utente non iscritto) data: 25/11/2013 14:53:13

    pensandoci bene far rinominare automaticamente il foglio è una cag...ta; il metodo più semplice del collegamento ipertestuale è probabilmente il più valido e veloce...



  • di kko (utente non iscritto) data: 25/11/2013 15:00:18

    scusate, ci ripenso nuovamente... es, la mia casella U1 riporta il nome con cui dovrei rinominare il foglio; si può fare automaticamente oppure no?



  • di Grograman (utente non iscritto) data: 25/11/2013 15:07:57

    Fermo restando quanto detto prima sui vincoli del nome dei fogli ecco un esempio:
     
    Option Explicit
    
    Sub Nomesub()
      Dim wb As Workbook
      Dim ws As Worksheet
      Dim strNome As String
       
      Set wb = ThisWorkbook
    
      For Each ws In wb.Worksheets
        With ws
          strNome = .Range("U1")
          .Name = strNome
        End With
      Next ws
      Set wb = Nothing
    End Sub
    



  • di totygno71 (utente non iscritto) data: 25/11/2013 15:10:06

    Altro che corto.... VF ce l'ha lunghissimoooooo.. il codice.... ovviamente ^_^
    Avevo fatto uguale ma secondo la descrizione dell'amino KK0 avevo fatto un ciclo che dal primo foglio al penultimo, inserendo nell'ultimo i colleganti_
     
    Option Explicit
    Sub riassumimelo()
    Dim i As Integer, sh As Worksheet
    i = 1
    Sheets("Tabella").Range("A:A").Clear
    
    For Each sh In ThisWorkbook.Sheets
        If sh.Name <> "Tabella" Then
        Sheets("Tabella").Cells(i, 1).Hyperlinks.Add Anchor:=Sheets("Tabella").Cells(i, 1), Address:="", SubAddress:=sh.Name & "!$A$1", TextToDisplay:=sh.Name
        i = i + 1
        End If
    Next
    
    End Sub
    



  • di kko (utente non iscritto) data: 25/11/2013 15:44:52

    scusa totygno71, me la spiegheresti in dettaglio questa ultima formula? se non è così complicato...



  • di Vecchio Frac data: 25/11/2013 16:00:11

    cit. "Avevo fatto uguale"
    ---> Il registratore di macro, questo sconosciuto ^_^





  • di kko (utente non iscritto) data: 25/11/2013 16:18:05

    ok, funziona alla grande... fantastico...
    posso un'altra domanda? :)
    esiste una funzione "cerca" che funziona in modo da restituirmi l'esatta cella dove risulta scritta la medesima cosa però cercando in tutti i fogli?



  • di Vecchio Frac data: 25/11/2013 16:43:13

    Il metodo .Find applicato a un oggetto Range, che corrisponde a Modifica > Trova.
    Un codice molto di esempio è il seguente.
     
    Option Explicit
    
    Sub trova()
    Dim sh As Worksheet, c As Object
    
    For Each sh In ThisWorkbook.Sheets
        Set c = sh.Cells.Find("testo da cercare", lookat:=xlPart)
        If Not c Is Nothing Then sh.Select: c.Select: Exit For
    Next
    End Sub






  • di kko (utente non iscritto) data: 25/11/2013 17:01:10

    ti chiedo in anticipo scusa ma.... dovresti spiegarmi...
    devo creare un posto dove scrivere quello che cerco, utilizzare un pulsante o qualsiasi altro metodo per dire "cerca" ed il risultato deve essere che il programma mi deve portare direttamente dove è posizionata questa cella, non solo scrivere la posizione della cella...



  • di mb data: 25/11/2013 18:00:59

    prova se può esserti utile
    il file allegato
    ciao



  • di kko (utente non iscritto) data: 25/11/2013 18:35:27

    per vedere l'allegato devo essere iscritto?



  • di totygno (utente non iscritto) data: 25/11/2013 19:05:12

    cit"---> Il registratore di macro, questo sconosciuto ^_^
    ? Nche senso? O_o



  • di totygno (utente non iscritto) data: 25/11/2013 19:09:33

    cit"scusa totygno71, me la spiegheresti in dettaglio questa ultima formula? se non è così complicato...
    Quale formula???



  • di kko (utente non iscritto) data: 25/11/2013 21:25:40

    ecco, da qui mi autoinsulto.... domani provo a smanettare un po' e poi vi romperò ancora un po' le scatole



  • di Vecchio Frac data: 25/11/2013 23:06:55

    @kko
    Non serve essere iscritti per vedere gli allegati. Guarda in alto a destra, a inizio discussione.
    Qual è la formula che non ti è chiara? Nei nostri codici non ci sono formule ^_^

    @totygno
    Il registratore, nel senso che l'abbiamo utilizzato entrambi per lo stesso risultato ^_^