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

Discussione: Indirizzo cella cliccata su foglio esterno

  1. #1
    arimans non è in linea Scolaretto
    Post
    115

    Indirizzo cella cliccata su foglio esterno

    Salve a tutti,

    vorrei fare in modo che da un file excel A l´utente mi indichi una cella su un foglio di un altro file B cliccandoci sopra.
    Devo quindi ricavare l´indirizzo della cella dopo l´evento DoppioClick sul secondo foglio.

    Quello che sono riuscito a fare é la seguente macro.
    Nella Classe ho il codice:

    codice:
    Public WithEvents appevent As Application
    Private Sub appevent_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
    ClickedCell = ActiveCell.Address
    End Sub
    Nel Modulo invece:
    codice:
    Sub ClickedCellSub()
    Dim WbA As Variant, WbB As Variant
    WbA = ThisWorkbook.Name
    WbB = "B.xlsx"
    
    MsgBox "Please double click on the Assembly SS 00 you want to compare"
    
    Set myobject.appevent = Application
    
    Workbooks(WbB).Sheets(1).Activate
    
    Set myobject.appevent = Nothing
    
    MsgBox ClickedCell
    
    Workbooks(WbA).Activate
    
    End Sub
    Ovviamente la macro é strutturata male perché non si aspetta che l´utente clicchi per andare avanti ma viene eseguita tutta in una volta.

    Come posso cambiarla per fare in modo che l´utente clicchi sul foglio del file B e poi la macro vada avanti?

    Grazie!

  2. #2
    L'avatar di Zer0Kelvin
    Zer0Kelvin non è in linea Scolaretto
    Luogo
    Teramo - provincia
    Post
    298
    Ciao.
    Senza entrare nel merito della logica (secondo me discutibile) puoi utilizzare un loop che controlli se ClickedCell varia, per es.
    codice:
    Sub ClickedCellSub()
    
        ClickedCell = ""
        MsgBox "Please double click on the Assembly SS 00 you want to compare"
        Set myobject.appevent = Application
        Workbooks("B.xlsx").Sheets(1).Activate
        Do While ClickedCell = ""
            DoEvents
        Loop
        Set myobject.appevent = Nothing
        MsgBox ClickedCell
        ThisWorkbook.Activate
    
    End Sub
    Inoltre sarebbe opportuno aggiungere un meccanismo che permetta di annullare l'operazione.
    __________________________
    [Excel 2010]
    -Condividere la conoscenza aumenta la ricchezza di tutti. (Z0°K)
    -Dai ad un uomo un e pesce lo avrai sfamato per un giorno; insegnagli a pescare e lo avrai sfamato per sempre. (Confucio)
    -Il sonno della ragione genera mostri. (Francisco Goya)
    -Il sapere non si propaga spontaneamente, l'ignoranza lo fa. (Z0°K)

  3. #3
    arimans non è in linea Scolaretto
    Post
    115
    Quote Originariamente inviato da Zer0Kelvin Visualizza il messaggio
    Ciao.
    Senza entrare nel merito della logica (secondo me discutibile)...
    Perché disutibile?


    Comunque ho risolto cosí, nel modulo:

    codice:
    Option Explicit
    Private mobjApplication As clsApplication
    Global ClickedCell As String
    
    Sub Vergleichen()
    Dim StruktBer As Variant        
    
    
    StruktBer = Application.GetOpenFilename(, , "Strukturbericht öffnen")                       '####Name der Datei aus der Strukturberich
    
    Set mobjApplication = New clsApplication
    Workbooks.Open StruktBer
    
    MsgBox "Bitte die Sachnummer der Strukturstufe '00' anklicken die man vergleichen möchte"
    
    End Sub
    
    Sub VAIAVANTI
    Nella classe:

    codice:
    Option Explicit
    
    Private WithEvents mobjApplication As Application
    
    Private Sub Class_Initialize()
    Set mobjApplication = Application
    End Sub
    
    Private Sub mobjApplication_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
        ClickedCell = Target.Address
        Set mobjApplication = Nothing
        Call VAIAVANTI
        
    End Sub
    Cosí la macro non va avanti finché l`utente non clicca.
    In questa maniera peró devo passare da una sub ad un´altra per interrompere il flusso... non c´é verso di rimanere dentro una stessa?

+ Rispondi al Thread

Permessi di invio

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