+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Problema con macro...

  1. #1
    Dorian92 non è in linea Novello
    Post
    8

    Problema con macro...

    Buongiorno a tutti,
    chiedo gentilmente il vostro aiuto...
    ho creato una tabella per tenere traccia delle manutenzioni di un impianto, questa è formata da diverse colonne (Matricola, Posizione impianto, Tipo di impianto..ecc) poi, in un altro foglio la scheda che il manutentore dovrà stamparsi e compilare...
    La macro, chiamata COMPILAZIONE, viene attivata con un pulsante posto su una cella alla fine di ogni riga e "raccoglie" i dati di quella stessa riga per inserirli nella scheda di manutenzione, stamparla e salvarla...
    La macro funziona però avrei la necessità che si aggiornasse in base alla posizione del pulsante...Mi spiego meglio:
    Se il pulsante di attivazione si trova su una cella della riga 10 deve compilarmi la scheda con i dati della riga 10, se il pulsante si trova sulla riga 11 deve compilarmi la scheda con i dati della riga 11 e così via...
    Mi scuso per il linguaggio tutt'altro che tecnico, spero di essermi spiegato bene..

  2. #2
    L'avatar di dodo47
    dodo47 non è in linea Topo di biblioteca
    Post
    3,107
    Ciao
    a mio avviso è un'impostazione errata del lavoro. Un pulsante per ogni riga è sicuramente cosa da evitare.
    Ora, partendo dal presupposto che ogni riga è in qualche modo identificabile univocamente, basta creare un solo pulsante che, trovata la riga giusta, ti riporta nel riepilogo i dati necessari.
    Oppure, forse più rapido, potresti utilizzare l'evento doppio click del foglio. Per meglio chiarire, sfruttando tale evento, excel ti restituisce la riga della cella in cui hai fatto doppio click.
    L'evento va inserito nel foglio in questione. Poniamo che nel Foglio1, colonna A, hai le tue matricole, inserisci "nel foglio"
    codice:
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Column = 1 Then
        mRiga = Target.Row
        ' qui le tue elaborazioni sfruttando la variabile mRiga che contiene _
          il numero della riga in cui è avvenuto l'evento doppio click _
          .... seguono tue elaborazioni
    End If
    Cancel = True
    End Sub
    saluti

  3. #3
    Dorian92 non è in linea Novello
    Post
    8
    Ciao,
    intanto grazie per avermi risposto...però non riesco ad applicare il tuo codice alla mia tabella...
    Questo è un esempio del codice che uso per copiare i vari dati da un foglio all'altro:
    codice:
    'Copia famiglia macchina tipo (es. 13B)'
        Sheets("Foglio IMPIANTO").Select
        Range("E3").Select
        Selection.Copy
        Sheets("Foglio 1").Select
        Range("AC1").Select
        ActiveSheet.Paste
    non essendo un grande esperto di VBA ho usato il registratore di macro...
    questa macro viene attivata premendo un pulsante posto sulla cella K3 del "Foglio IMPIANTO"... e va a copiare il dato sulla cella AC1 del "Foglio 1"..

  4. #4
    L'avatar di dodo47
    dodo47 non è in linea Topo di biblioteca
    Post
    3,107
    Ciao
    a parte il fatto che per fare quello da te esposto basta una sola riga, evitando inutili select:
    codice:
    Sheets("Foglio 1").Range("AC1") = Sheets("Foglio IMPIANTO").Range("E3")
    io ti suggerivo quanto segue:
    - poniamo che nel tuo "Foglio IMPIANTO" in E3, F3, G3 hai i valori da copiare nel "Foglio 1" rispettivamente in AC1, AD1, AE1, apri la finestra del vba, fai doppio click a destra su "Foglio IMPIANTO" e nella finestra a sinistra ci incolli:
    codice:
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Column = 5 Then ' esegue l'evento in qualsiasi cella della col 5 (E) venga effettuato il doppio click
        mRiga = Target.Row 'riga in cui è stato fatto doppio click
        Sheets("Foglio 1").Range("AC1") = Cells(mRiga, 5) ' riga del doppio click, colonna 5(E)
        Sheets("Foglio 1").Range("AD1") = Cells(mRiga, 6) ' riga del doppio click, colonna 6(F)
        Sheets("Foglio 1").Range("AE1") = Cells(mRiga, 7) ' riga del doppio click, colonna 7(G)
    End If
    Cancel = True
    End Sub
    Fatto ciò, vai nel "Foglio IMPIANTO" e fai doppio click su E3....

    Ovviamente se fai doppio click su E5 otterrai la copia dei dati della riga 5 sempre in AC1, AD1, AE1.

    Spero di esser stato chiaro

    saluti

  5. #5
    Dorian92 non è in linea Novello
    Post
    8
    Perfetto,
    grazie mille, soprattutto per la tua pazienza...
    sono riuscito a scrivere (o meglio) a copiare il tuo codice e risolvere il problema.
    Grazie ancora..
    Ciao

+ Rispondi al Thread

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi