Voci menu a discesa...
 
Notifiche
Cancella tutti

La consultazione del forum è libera per tutti.

Per poter porre un quesito è invece necessario essere un utente registrato (clicca qui se non lo sei).

Tutti gli utenti che richiedono un supporto, come da REGOLAMENTO, sono caldamente invitati ad allegare un file di esempio con l'indicazione di quello che si desidera ottenere.

[Risolto] Voci menu a discesa piccole e poco visibili

51 Post
3 Utenti
1 Reactions
2,371 Visualizzazioni
Ronny
(@ronny)
Post: 28
Eminent Member
Avviatore di Topic
 

Postato da: @gianfranco55

 

ma ti ripeto giocaci fino a che non trovi quello che ti piace

 

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  If Not Intersect(Target, Range("B3:B100")) Is Nothing Then
    Application.EnableEvents = False
UserForm1.Left = Cells(Target.Row, 3).Left + 20  'xxxxxxxxxx aggiunta
UserForm1.Top = Cells(Target.Row, 3).Top + 200  'xxxxxxxxxx aggiunta
    UserForm1.Show
    Application.EnableEvents = True
  End If
End Sub

 

Si ho provato la modifica, ma ad un certo punto il Combo si visualizza sempre più in basso fino a scoparire e a bloccarmi il foglio. Continuo a fare delle prove ma pare che agendo solo su queli valori non si garantisce che il combobox si apra sempre accanto alla cella interessata.

Lo devo necessariamente risolvere questo problema altrimenti il foglio diventa inutilizzabile ad un certo punto.

Grazie ancora

 

 
Postato : 27/02/2023 12:04
Ronny
(@ronny)
Post: 28
Eminent Member
Avviatore di Topic
 

Dimenticavo,

riportando l'impostazione a 1 - CenterOwner, il problema non si presenta, però la finestra del combo viene aperta quasi a centro dello schermo

 
Postato : 27/02/2023 12:49
gianfranco55
(@gianfranco55)
Post: 1861
Moderatore
 

ciao

a me viene sempre vicino alla cella

ora faccio delle prove

hai celle ridimensionate o altro?

 
Postato : 27/02/2023 15:03
Ronny
(@ronny)
Post: 28
Eminent Member
Avviatore di Topic
 

Postato da: @gianfranco55

ciao

a me viene sempre vicino alla cella

ora faccio delle prove

hai celle ridimensionate o altro?

 

Viene vicino alla cella fino ad un certo punto.

Adesso non so cosa intendi per celle ridimensionate.

 

 
Postato : 27/02/2023 17:42
gianfranco55
(@gianfranco55)
Post: 1861
Moderatore
 

 

ho iodea che tu superi le cento righe

aumentale a 1000 o quante vuoi

  If Not Intersect(Target, Range("B3:B100")) Is Nothing Then
    Application.EnableEvents = False

scrivi

B3:B1000

 
Postato : 27/02/2023 17:57
Ronny
(@ronny)
Post: 28
Eminent Member
Avviatore di Topic
 

Ho apportato la modifica, ma è cambiato poco. Rimane stabile allo steso posto per un po', ma andando sempre più sotto inizia a scazzare per poi scomparire. Allego il file nel caso abbia fatto delle modifiche inavvertitamente o me ne sia dimenticato durante le prove. Grazie ancora

 

 
Postato : 27/02/2023 18:40
Marius44
(@marius44)
Post: 338
Moderatore
 

Buon pomeriggio a tutti

Dopo una giornata intensa (accompagni i nipoti a scuola, visita dal cardiologo - fortunatamente tutto OK - spesa con la moglie e riprendi i bimbi a scuola) speravo di dedicarmi al problema. 

Ho approfondito un pochino e la cosa non è facilmente fattibile nè gestibile. Occorre utilizzare delle API (non quelle che pungono 🤣) e la cosa non mi è familiare per nulla.

Per tagliare la testa al toro propongo di "bloccare" le prime tre righe è lì far apparire il Combo. Ho abbozzato qualcosa che allego per vedere se è accettabile. Se così fosse si potrebbe anche eliminare la UserForm e lasciare solo la Combo.

Aspetto vostre notizie.

Ciao,

Mario

 

 
Postato : 27/02/2023 18:48
gianfranco55
(@gianfranco55)
Post: 1861
Moderatore
 

ciao

hai ragione devo calcolatre il TOP

ora vedo se ci riesco

 
Postato : 27/02/2023 18:50
Ronny
(@ronny)
Post: 28
Eminent Member
Avviatore di Topic
 

Postato da: @gianfranco55

ciao

hai ragione devo calcolatre il TOP

ora vedo se ci riesco

 

Va bene grazie

 

 
Postato : 27/02/2023 19:08
Ronny
(@ronny)
Post: 28
Eminent Member
Avviatore di Topic
 

@ Mario

Grazie di tutto davvero.

La combo però si visualizza troppo in alto. Poco comoda direi.

Per la questione delle API penso che sia meglio  mantenersi sul semplice per quanto è possibile a questo punto, anche perché sarebbe un casino se volessi aggiungere o modificare qualcosa. Infatti ho provato ad aggiungere una nuova tabella dati per un nuovo Combo da aggiungere nel foglio1, ma ho fatto un macello.

Allego il file con il... tentativo di modifiche casomai interessasse o meglio ancora nel caso si avesse la pazienza di spiegarmi perché non va visto che ho provato a replicare il codice del primo form quasi pari pari cambiando solo i riferimenti.

 
Postato : 27/02/2023 19:13
Marius44
(@marius44)
Post: 338
Moderatore
 

Ciao

L'evento DoubleClick è UNO SOLO pertanto non puoi fare due macro, deve essere solo una

Sdoppia l'If .. End If cioè

If Not Intersect(Target, Range("B5:B1000")) Is Nothing Then

....

ElseIf Not Intersect(Target, Range("F5:F1000")) Is Nothing Then

....

End If

 

Prova e fammi sapere.

Ciao,

Mario

 
Postato : 27/02/2023 19:28
gianfranco55
(@gianfranco55)
Post: 1861
Moderatore
 

ciao

ho cambiato tutto con una macro di Gamberini

 

devi levare la protezione alla colonna B

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  If Not Intersect(Target, Range("B3:B1000")) Is Nothing Then
    Application.EnableEvents = False

    UserForm1.Show
    Application.EnableEvents = True
  End If
End Sub

 Private Declare PtrSafe Function GetDC& Lib "user32.dll" (ByVal hwnd&)
    Private Declare PtrSafe Function GetDeviceCaps& Lib "gdi32" (ByVal hDC&, ByVal nIndex&)
    
    Dim wk As Worksheet


Private Sub ComboBox1_Click()
ActiveCell = ComboBox1.Text
Unload Me
ActiveCell.Offset(1, 0).Select
End Sub
Private Sub UserForm_Initialize()
    Dim lRiga As Long
    Set wk = ThisWorkbook.Worksheets("Foglio1")
    lRiga = ActiveCell.Row
    Call FormAlign(Me, wk.Cells(lRiga, 3))
End Sub
Sub FormAlign(MyForm, MyCell As Range)
 Dim x#, y#
 x = GetDeviceCaps(GetDC(0), 88) / 72
 y = GetDeviceCaps(GetDC(0), 90) / 72
 With MyForm
     .StartUpPosition = 0
     .Left = ActiveWindow.PointsToScreenPixelsX(MyCell.Left * x) * 1 / x
     .Top = ActiveWindow.PointsToScreenPixelsY(MyCell.Top * y) * 1 / y - 60
     '.Show
 End With
Set MyForm = Nothing
End Sub



Private Sub UserForm_Activate()
Application.ScreenUpdating = False
Application.Goto Reference:="Tabellacars"
ActiveWorkbook.Worksheets("liste").ListObjects("Tabellacars").Sort.SortFields. _
    Clear
ActiveWorkbook.Worksheets("liste").ListObjects("Tabellacars").Sort.SortFields. _
    Add Key:=Range("B2"), SortOn:=xlSortOnValues, Order:=xlAscending, _
    DataOption:=xlSortTextAsNumbers
    With ActiveWorkbook.Worksheets("liste").ListObjects("Tabellacars").Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
Range("C1").Select
Sheets("Foglio1").Select
Application.ScreenUpdating = True
UserForm1.ComboBox1.RowSource = "Tabellacars"
End Sub
 
Postato : 27/02/2023 19:29
Ronny
(@ronny)
Post: 28
Eminent Member
Avviatore di Topic
 

Postato da: @marius44

If Not Intersect(Target, Range("B5:B1000")) Is Nothing Then

....

ElseIf Not Intersect(Target, Range("F5:F1000")) Is Nothing Then

....

End If

 

Ho modificato così:

 

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  If Not Intersect(Target, Range("B5:B1000")) Is Nothing Then
    Application.EnableEvents = False
UserForm1.Left = Cells(Target.Row, 3).Left + 20  'xxxxxxxxxx aggiunta
UserForm1.Top = Cells(Target.Row, 3).Top + 40    'xxxxxxxxxx aggiunta
    UserForm1.Show
    Application.EnableEvents = True
    
  ElseIf Not Intersect(Target, Range("F5:F1000")) Is Nothing Then
    Application.EnableEvents = False
UserForm2.Left = Cells(Target.Row, 3).Left + 20  'xxxxxxxxxx aggiunta
UserForm2.Top = Cells(Target.Row, 3).Top + 40    'xxxxxxxxxx aggiunta
    UserForm2.Show
    Application.EnableEvents = True
  End If
End Sub

però adesso mi da un errore di runtime per il combo credo

 

 

 
Postato : 27/02/2023 20:33
Ronny
(@ronny)
Post: 28
Eminent Member
Avviatore di Topic
 

Postato da: @gianfranco55

-- l'allegato non è disponibile --

ciao

ho cambiato tutto con una macro di Gamberini

 

 

 

Wooow!

Quanta roba. Perché devo togliere la protezioen alla colonna B?

Si può aggiungere un nuovo Combo per la tipologia di pagamenti come indicato nel mio file sopra?

Grazie

 

 
Postato : 27/02/2023 20:38
gianfranco55
(@gianfranco55)
Post: 1861
Moderatore
 

Perché devo togliere la protezioen alla colonna B?

 

perchè altrimenti non ci scrivi e ti blocca la macro

puoi farlo con il vba

per ora dimmi se ti funziona

poi vediamo il resto

 
Postato : 27/02/2023 20:41
Pagina 2 / 4
Condividi:
My Agile Privacy
Questo sito utilizza cookie tecnici e di profilazione. Cliccando su accetta si autorizzano tutti i cookie di profilazione. Cliccando su rifiuta o la X si rifiutano tutti i cookie di profilazione. Cliccando su personalizza è possibile selezionare quali cookie di profilazione attivare.
Attenzione: alcune funzionalità di questa pagina potrebbero essere bloccate a seguito delle tue scelte privacy
     Scarica il nostro ebook gratuito     

Unisciti a oltre 35.000 professionisti
che hanno già scelto di semplificare il proprio lavoro
e aumentare la produttività con la nostra newsletter!

Scarica l’ebook con i
migliori trucchi e suggerimenti per Excel
selezionati per te da Excel Academy

Download