Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [VBA] MouseMove come MouseOver

    Salve,
    sto facendo un programma Excel, e devo gestire l'avvio di codice VB nel momento in cui il mouse si sposta in una determinata zona del foglio elettronico...

    per determinare la zona del foglio sto usando un frame (ma va bene qualsiasi altra cosa che gestisca gli eventi da mouse), e per l'attivazione del codice VB sto usando l'evento "MouseMove".

    Private Sub Frame1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    istruzioni...

    End Sub


    Il problema è che quando il mouse va sul frame, il codice vb viene ripetuto a catena finchè non esco dal frame... a me servirebbe che il codice venga eseguito solo una volta quando entro col mouse nel frame, in pratica come il "onMouseOver" dell'HTML.

    Aldilà di come risolvo, l'importante è il risultato, percui sono ben accetti anche consigli che seguano una "strada" diversa

    G.

  2. #2
    Ciao, credo basti fare così.
    Va bene usare l'evento Frame1_MouseMove, ma devi usare anche l'evento Form_MouseMove. Quando si verifica Frame1_MouseMove imposti una veriabile tipo PosizioneCursore="Frame", ovviamente quando si verifica Form_MouseMove usi PosizioneCursore="Form". La routine che devi far girare la fai partire solo quando il contenuto della variabile passa da "Form" a "Frame".
    codice:
    sub Form_MouseMove(xxxxxxxx....)
     PosizioneCursore="Form"
    end sub
    
    sub Frame1_MouseMove(xxxxxxxx....)
     if PosizioneCursore="Form" then
       PosizioneCursore="Frame"  'imposti subito il valore, perchè se la routine dura tanto continua ad entrare qui.
       RoutineEvento()
     endif
     PosizioneCursore="Frame"
    end sub

  3. #3
    non sono sicuro d'aver capito bene, ma se uso due oggetti (che siano form, frame o etichette...), come li dispongo sul foglio elettronico? Li sovrappongo?

    per ora ho risolto usando due etichette, una fa un'operazione che esclude l'altra e viceversa, ed ho valorizzato una cella che funziona da "controllo"... non è come lo immaginavo ma ci si avvicina...

  4. #4
    Ciao, scusa ma ho capito male io, ho dato per scontato che l'oggetto frame era in un form... comunque il concetto è uguale, come dici te al posto del form puoi mettere un altro oggetto, in modo che si sovrappongono, magari una label bianca appena più grande del frame, così non si vede. Ho fatto una prova, funziona, ma se muovi il mouse troppo di scatto non si verifica sempre l'evento mousemove, anche se passi sopra l'oggetto.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.