Stellar Blade Un'esclusiva PS5 che sta facendo discutere per l'eccessiva bellezza della protagonista. Vieni a parlarne su Award & Oscar!
 
Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Listview Colonna selzionata

Ultimo Aggiornamento: 04/04/2023 19:07
Post: 7.190
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
04/04/2023 09:53

Ciao Come da titolo come faccio a sapere con il VBA qual'è la colonna selezionata, non trovo il comando, per sapere quale colonna ho selezionato il dato.

qualcuno l'ha usato? o conosce un metodo per sapere quale colonna ho selezionato.

Ciao By Sal (8-D
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 520
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
ONLINE
04/04/2023 10:18

ciao Salvatore
puo' esserti utile questa vecchia conversazione ?

https://microsoft.public.it.office.excel.narkive.com/oNjXyj8g/colonna-selezionata

Leo

LEO
https://t.me/LordBrum
Post: 7.190
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
04/04/2023 10:30

Ciao Leo, purtroppo no parla di colonne sul foglio, e non di colonne di un controllo Listview.

riesco a selzionare gli elementi della listview , ma non riesco a sapere l'elemento che ho selezionato in quale colonna della Listview si trova.

Ciao By Sal (8-D
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 4.887
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
ONLINE
04/04/2023 11:35

Ciao Salvatore

Prova a dare uno sguardo qui

https://social.msdn.microsoft.com/Forums/vstudio/en-US/0d8579ad-773c-47b5-a2a6-4a933db0cd35/get-an-index-of-a-list-view-column?forum=vbgeneral

Alfredo
Post: 7.191
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
04/04/2023 11:52

Ciao Alfredo, grazie per la risposta ma purtroppo il codice è valido per VisualStudio, come vedi vi è differenza tra VisualStudio ed Excel, nei parametri per il column_Click, sotto è quello Excel, mancano gli altri parametri.

Private Sub ListView1_ColumnClick(ByVal sender As Object, ByVal  e  As System.Windows.Forms.ColumnClickEventArgs) Gestisce ListView1.ColumnClick
        MsgBox(ListView1.Columns.Item( e .Column).Index)
Fine Sub

Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)

End Sub


se non conosco la colonna che ho selezionato non posso portare i dati nella colonna appropriata del foglio.

o meglio io la conosco quale colonna ho selezionato ma non riesco a passare l'indice della colonna ad una variabile perche non ho modo di intercettarla, forse meglio dire non conosco il comando par saperla.

Ciao By Sal (8-D

[Modificato da by sal 04/04/2023 12:03]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 4.888
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
ONLINE
04/04/2023 12:07

Perdonami Salvatore mi era sfuggito.

Ma (non ricordo) non mi pare che in una listview si possa selezionare una specifica colonna; selezioni la riga e ne recuperi il numero con item.

Devo dire che non ho capito bene il tuo quesito.

Puoi allegare un file e si ragiona su quello?

Mi sbaglierò ma secondo me un indice di colonna non c'è
[Modificato da alfrimpa 04/04/2023 12:08]

Alfredo
Post: 4.889
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
ONLINE
04/04/2023 12:19

Io in questa listview riesco a selezionare solo la riga non la colonna



Riesci a spiegare meglio ciò che vuoi fare?
[Modificato da alfrimpa 04/04/2023 12:22]

Alfredo
Post: 7.192
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
04/04/2023 15:52

Ciao Alfredo mi serve un costruttore di codici partendo da un codice diciamo in colonna "A", ed ho pensato ad una listview che ben si adatta come base a questo scopo secondo il mio parere.

visto che non riesci nemmeno tu a risalire alla colonna.

ci posso riuscire ma selezionando preventivamente l'intestazione della colonna, e volevo evitare questo passaggio, ti metto un esempio



come vedi seleziono la colonna e mi esce il combobox per la selezione delle regioni ora quando seleziono la colonna delle province od altre colonne
la combobox dovrebbe aprirsi sulla colonna selezionata, ma non sapendo l'index della colonna resta sempre fermo alla stessa colonna.

inizialmente la colonna che seleziono si apre il combo su quella colonna ma resta li ferma e non si muove sulle altre, come capirai le colonne Province e comuni sono a cascata della scelta fatta sulla colonna precedente.

Ciao Salvatore (8-D

se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 3.444
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
04/04/2023 16:31

ciao Salvatore
la ListV ha l'evento columnClick che normalmente si utilizza per il sort:

Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)

Ovviamente avrai delle intestazioni e la colonna la ricavi con:

colonna=ColumnHeader.Index - 1

Ma va da se che la devi cliccare.

Non ho capito cosa ti serve, l'effetto mostrato al post #8 ?? Cioè cliccare su un item di una colonna per aprire la relativa combo ??
questo?


Se è così, devi utilizzare l'evento doppioClick sulla LV abbinato all'evento MouseDown dal quale ricavi le coordinate del mouse.
Nell'evento DoppioClick dovrai fare un ciclo delle intestazioni e vedere se le coordinate corrispondono al "left" dell'item su cui hai fatto doppioClick calcolandone anche la larghezza.

Se è quello che cerchi ti mando il file.

se dovesse servirti qualche altra informazione, qualcosa ne so.
Il web è "povero" di indicazioni per le LV vba

cari saluti





[Modificato da dodo47 04/04/2023 16:58]
Domenico
Win 10 - Excel 2016
Post: 7.193
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
04/04/2023 18:35

Ciao Domenico, me ne sono accorto, che le informazioni sul LW non sono molte e frammentate, ho fatto molte prove per arrivare a quello che hai visto.

a dirti la verità sto esplorando un poco, perche non riesco nemmeno io ad inquadrare bene il mio problema.
se mi mandi il file e mi spieghi il fatto del mouseDown per ricavare la colonna te ne sarei grato.

sto cercando di fare un compilatore di codici, diciamo che ho un codice chiamato "Codice1"

e vi sono diversi archivi(colonne) che devo abbinare al Codice1, esempio devo creare una serie di codici compilati il codice1 esempio scelgo 2 regioni

campania e basilicata
della campania scelgo le province, avellino-caserta, di caserta scelgo i comuni caserta-capua

a questo punto il codice devo svilupparlo in una stringa

codice1-campania-caserta-caserta
codice1-campania-caserta-capua
codice1-campania-avellino-avellino
codice1-campania-avellino-avella
codice1-basilicata-matera-etc...
etc..

posso anche scegliere tutte le province e tutti i comuni, quindi una ripetione di codice1 diciamo molto lungo, lo stesso si ripeterà per codice2

ma può anche essere che codice2 non abbia le stesse regioni-province-comuni di codice1.

ho pensato che con LW potrei fare questo tipo di selezione, ma mi sto rendendo conto, che non posso dare selezioni multiple dei dati, non li potrei riportare nella stessa cella, e sono un poco in panne al momento.

comunque se mi mandi il file con le spiegazioni, vedo se posso fare qualcosa.

Un Saluto Ciao By Sal (8-D



[Modificato da by sal 04/04/2023 18:37]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 3.446
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
04/04/2023 19:07

ciao Salvatore
allego uno zip perchè quel file utilizza anche una ImageList per affiancare le icone ai singoli items della LV che stanno in una cartella chiamata IconLV nelle medesima directory del file.
Se non ti serve, devi smanettare un po' il codice per commentarne i riferimenti e cancellare dalla uForm tale oggetto.

Mi avvalgo di una combo in un frame per farla apparire nel momento in cui fai doppioClick su un item.
NB: poichè la col. 0 è un id non è modificabile.

Veniamo alle coordinate dell'item

Nel momento che fai doppioClick, naturalmente excel intercetta prima il MouseDown, pertanto esegue questo evento:
 Private Sub ListView2_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As stdole.OLE_XPOS_PIXELS, ByVal Y As stdole.OLE_YPOS_PIXELS)
    m_sngXDown = X
    m_sngYDown = Y
End Sub

Le due variabili che vedi sono dichiarate come Private ad inizio modulo naturalmente.

Ora excel continua il tuo doppioClick ed esegue il relativo evento:
Private Sub ListView2_DblClick()
Dim c As Integer
Dim i           As Integer
Dim ItemSel     As ListItem
FrameXit
With LV.ColumnHeaders
    For c = 1 To .Count
        If m_sngXDown * 0.75 >= .Item(c).Left And m_sngXDown * 0.75 <= .Item(c).Left + .Item(c).Width Then
            colonna = c
            Exit For
        End If
    Next
End With
i = colonna
If i = 1 Then Exit Sub
FillCboList i

...ETC ETC ETC

Pertanto fa un loop sulle intestazioni, calcola se la coordinata cliccata (*075 è per l'allineamento tra pixel-point) è >= al left dell'item e <= al left dell'item + la sua larghezza:
If m_sngXDown * 0.75 >= .Item(c).Left And m_sngXDown * 0.75 <= .Item(c).Left + .Item(c).Width Then

quindi assegna a "i" il numero della colonna.
Poi esegue la sub FillCboList passandole tale parametro (i) per alimentare la combo.

Questo è quanto in breve.

Io non ho capito comunque quello che devi fare tu......sorry

un abbraccio




[Modificato da dodo47 04/04/2023 19:09]
Domenico
Win 10 - Excel 2016
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
[RISOLTO] HELP URGENTE Grafici a barre (3 messaggi, agg.: 22/10/2015 12:29)
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 09:05. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com