you can try this function
'call it
array=GetRowColumn(Item, listbiew)
this is the function to get the column clicked
Public Declare Function GetScrollPos Lib "user32" _
(ByVal hwnd As Long, ByVal nBar As Long) As Long
Public Const SB_HORZ = 0
Public lvX As Long
Public Function GetRowColumn(ByVal Item As MSComctlLib.ListItem, ByRef Lv As ListView) As Long()
Dim ColH As ColumnHeader
Dim pix As Long
Dim Index As Long
Dim ret(0 To 1) As Long
Dim XVal As Long
'Use the API to get the scroll bar's pixel position
XVal = (GetScrollPos(Lv.hwnd, SB_HORZ) * _
Screen.TwipsPerPixelX) + lvX
'Traverse each column until the X coordinate we clicked on
'becomes less then the total of the traversed columns'
'widths.
For Each ColH In Lv.ColumnHeaders
pix = pix + ColH.Width
If (pix >= XVal) Then Exit For
Index = Index + 1
Next
'returnrow and column in a 2D array
ret(0) = Item.Index - 1
ret(1) = Index
GetRowColumn = ret
End Function
Hope this code helps you