IT Новости из мира ПК
5 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд

Listview vba excel

Excel VBA ListView Control Examples

by Igor Katenov, the lead developer at 10Tec

The native ListView control from the OS Windows is a control allowing you to display items in various layouts. This versatile control can be used in Microsoft Office VBA. In this article you will find some Excel VBA ListView control examples with our analysis of their drawbacks and serious problems.

Adding the ListView control in VBA

Before you can add ListView control in VBA, you need to have the MS Windows common controls pack (MSCOMCTL.OCX) installed and registered in your system. If MSCOMCTL.OCX is registered properly, you can add the ListView control in Excel VBA using the Additional Controls dialog:

Pay attention to the location of MSCOMCTL.OCX in the Additional Controls dialog. This OCX is a 32-bit executable file, and it must be placed in the SysWoW64 system directory but not in System32 in 64-bit versions of Windows. For more info, read the following StackOverflow post:

As you can also conclude after reading this post, the ListView control may be absent in the latest version of Microsoft Office and Windows. Fortunately for all us, we can still download the Microsoft Visual Basic 6.0 Common Controls redistributable package including ListView from this page on Microsoft’s website.

Many developers experienced problems with instantiating common controls like ListView on Excel worksheets after recent updates in the Windows and Office products even if the Windows common controls OCX was registered correctly. To avoid these issues in production code executing on the computers of your clients, you can try to Create ListView in VBA at Runtime. The essential part of the suggested code solution looks like the following:

One important thing related to this code and any other code manipulating the ListView control in Excel VBA is the following. To use the specific ListView control types and properties in VBA code (like the ListView type itself, the LabelEdit and CheckBoxes properties, the lvwAutomatic named constant and the like), you need to add the reference to the MSComctlLib type library implemented in the same MSCOMCTL.OCX file to your Excel VBA project. If you do not do this, Excel VBA will highlight every member related to ListView with the message «Compile error: User-defined type not defined».

To add a reference to the MSComctlLib type library in your Excel VBA project, use the ToolsReferences dialog in Excel VBA:

If you do not find the «Microsoft Windows Common Controls 6.0 (SP6)» record in the list of available controls (which may be the case if you have never used common controls like ListView in Excel VBA), press the Browse button to select the MSCOMCTL.OCX file on your hard drive. Generally you will find it in the Windows System directory (System32 or SysWoW64 depending on the edition of your Windows).

Opening the References dialog in Excel VBA may fail with the «Error accessing the system registry» message in the latest versions of Windows like Windows 7 or Windows 10. If you see this, you need to relaunch the Microsoft Excel application with administrator rights to grant this application full access to the Windows registry for operations with COM type libraries.

Edit subitems in ListView in Excel VBA

The ListView control provides you with the in-place editing capability to edit item labels. However, if your ListView control works in the report (details) view to imitate a grid control, there is no built-in tool to edit ListView subitems.

You can find a lot of Visual Basic examples of how to implement editing for ListView subtitems in the Internet. All these solutions are based on the same idea: you need to add an additional text box control to your form containing the editable ListView control and place this extra text box over the required subitem when the user is going to edit it.

If try to go this way to implement editable ListView in Excel VBA, you will face two serious troubles related to this development environment. First, the vast majority of published solutions imply that you deal with pixel coordinates everywhere. But control positions and sizes in UserForms are measured in points, so you will need to convert them from points to pixels with helper functions based on the Windows API GetDeviceCaps call (see, for example, this link).

The other problem is that you cannot place the VBA TextBox control from the Microsoft Forms 2.0 package over the ListView control in VBA. Even if you can make this construction work with another text box control, think about reusing of this solution for all ListView controls in which you need subitems editing. You will duplicate the ListView editing infrastructure code and this external editor for all these ListView controls. Your Excel VBA solution will be bloated, and it will be very hard to support it.

Checkboxes in ListView subitems

«Add checkboxes in subitems of listview» is a popular Internet search query related to the ListView control. As a rule, people are searching for a solution to this problem when they use ListView in report mode and want to add checkboxes into several ListView columns.

Unfortunately, the best thing you can do using the native ListView features is to place checkboxes only into one column:

You can easily enable checkboxes for ListView items from VBA code by setting the CheckBoxes property of the ListView control to True, but this adds native checkbox controls only to the item labels in the very first column. If you need checkboxes only in one column displayed not on the first place, you can use a simple trick and move the columns with item labels to the required position. The screenshot with the ListView control on a UserForm above was captured after we had launched the form with the following initialization code, which is an example of how to add ListView subitems in Excel VBA:

However, this approach does not work if you need checkboxes in ListView subitems in several columns. An excellent idea how you can imitate real checkbox controls in ListView subitems was discussed on VBForums in this thread:

The idea is to use a picture of checkbox and display it in the required subitems. Fortunately, ListView allows us to easily add pictures to its subitems in the ListSubItems.Add method with its optional fourth parameter named ReportIcon . The checkbox image can be stored in the ImageList control from the aforementioned Windows common controls pack available for using on UserForms in Excel VBA as well. Below is one more Excel VBA code sample for the ListView control in which we show how to add images to ListView subitems:

Читать еще:  Vba excel активная ячейка

This is a neat solution to display Boolean values as checkboxes in ListView columns. But if you need to provide your users with the ability to change the statuses of the ListView checkboxes interactively by clicking them, you will need to write a lot of code to support this infrastructure and duplicate it together with the ImageList control storing the checked and unchecked checkbox images for every required ListView control in your Excel VBA project.


We examined several common usage examples for the ListView control in Excel VBA and saw that we may encounter troubles even in all these ordinary scenarios. We tried to provide solutions or workarounds if they are possible, but an alternative way could be using our iGrid ActiveX grid in Excel VBA for ListView in report view. You will never face any of the problems mentioned above with 10Tec’s iGrid in Excel VBA and will get much more benefits, like built-in grouping/sorting, in-place editing of cells with the text and checkbox editors, fast flicker-free drawing code and dynamic cell formatting. Explore the product pages and articles on this website to find out more about 10Tec’s Excel VBA ListView control alternative. You can start reading from the following article:

Listview vba excel

Элемент управления ListView отображает данные как объекты ListItem. Каждый объект ListItem может связать необязательный значок с меткой объекта. Элемент управления превосходит другие при представлении подмножеств данных (типа членов базы данных) или обособленных объектов (типа шаблонов документа).

Возможное применение
  • Отображение результатов запроса базы данных.
  • Отображение всех отчетов в таблице базы данных.
  • В тандеме с элементом управления Treeview дать пользователю расширенное представление ноуда элемента управления TreeView.
Четыре различных доступных режима просмотра

Элемент управления ListView может отображать данные в четырех различных режимах просмотра (как показано на рис. 2.7-2.10). Программирование элемента управления может зависеть от того, какой из режимов просмотра вы предлагаете пользователю.

Каждый из этих режимов имеет свои преимущества. Некоторые из них перечислены в следующей таблице:

Значки. Может управляться мышью, позволяя пользователю перетащить и опустить объект и перестраивать объекты.

Мелкие значки. Позволяет увидеть больше объектов ListItem. Как и в режиме Icon, объекты могут быть перестроены пользователем.

Список. Представляет сортируемый список объектов ListItem.

Таблица. Представляет сортируемый список с колонками, позволяющими отобразить дополнительную информацию.

Рис. 7A.7 ListView в режиме Icon

Рис. 7A.8 ListView в режиме SmallIcon

Рис. 7A.9 ListView в режиме List

Рис. 7A.10 ListView в режиме Report

Изменение режима просмотра свойством View

Чтобы изменить режим визуального отображения, используйте свойство View. Следующий код устанавливает свойство View в режим Report (3), используя встроенную константу lvwReport:

‘ Имя элемента управления — «ListView1»
ListView1.View = lvwReport

Используя свойство View, можно разрешить пользователю динамически изменять вид. В событии формы Load заполняется ComboBox с вариантами выбора отображения:

Private Sub Form_Load()
‘ Заполнение элемента управления ComboBox.
‘ Имя элемента управления ComboBox — «cmbChooseView».
With cmbChooseView
.AddItem «Значки» ‘ 0
.AddItem «Мелкие значки» ‘ 1
.AddItem «Список» ‘ 2
.AddItem «Таблица» ‘ 3
End With
End Sub

В событии Click элемента управления ComboBox настройка вида элемента управления может быть сброшена:

Private Sub cmbChooseView_Click()
‘ Имя элемента управления ListView — «lvwDB».
lvwDB.View = cmbChooseView.ListIndex
End Sub

Два элемента управления ImageList для Icons и SmallIcons

Объект ListItem состоит из подписи (свойство Text) и необязательного изображения, которое снабжается элементом управления ImageList. Однако элемент управления ListView, в отличие от других элементов управления, может использовать два элемента управления ImageList, которые можно установить для использования свойств Icons и SmallIcons. Сколько использовать элементов управления ImageList — один или оба, зависит от выбранного режима визуального отображения, определенного свойством View.

В режимах List, SmallIcon и Report можно использовать для представления объекта ListItem маленький значок. Один элемент управления ImageList (указанный свойством SmallIcons) поставит изображения для использования в любом из этих трех режимов. Во время разработки или выполнения установите свойство SmallIcons на элемент управления ImageList, и он снабдит ListView этими изображениями. Во время разработки, чтобы установить ImageList для SmallIcons, используйте окно диалога страниц свойств элемента управления ListView. Во время выполнения используйте следующий код:

Напротив, когда элемент управления находится в режиме Icon, элемент управления использует другой набор изображений, снабженных вторым элементом управления ImageList. Установите свойство Icons на этот второй ImageList во время разработки, используя окно диалога страниц свойств, или напишите следующий код для установки во время выполнения:

Примечание Размер значков, которые вы используете, определен элементом управления ImageList. Доступны размеры 16×16, 32×32, 48×48, и Custom (заказные).

Если вы планируете использовать больше одного режима отображения и хотите отобразить значки, установите свойства SmallIcon и Icon для каждого объекта ListItem. Следующий код сначала объявляет объектную переменную типа ListItem, затем устанавливает объектную переменную на единственный объект ListItem, добавленный в коллекцию методом Add. Тогда изображения SmallIcon и Icon устанавливаются ссылкой на объектную переменную:

Dim itmX As ListItem
Set itmX = ListView1.ListItems.Add()
‘ Предположим, что изображение с именем «smallBook» существует
‘ в ImageList, на который установлено свойство SmallIcons.
itmX.SmallIcon = «smallBook»
‘ Предположим, что изображение с именем «BigBook» существует
‘ в ImageList, на который установлено свойство Icons.
itmX.Icon = «BigBook»

После установки изображения свойствами SmallIcon и Icon правильное изображение будет автоматически отображаться при переключении видов, используя свойство View.

Отображение ColumnHeaders в режиме Report

Специфическая особенность режима Report — объекты ColumnHeader. Объекты ColumnHeader элемент управления ListView содержит в коллекции ColumnHeaders. ColumnHeader показан на рис. 7A.11:

Рис. 7A.11 ColumnHeader

Объект ColumnHeader имеет свойство Text, которое отображает текст, когда элемент управления находится в реджиме Report. Еще можно установить свойство Width каждой колонки ColumnHeader, а также свойство Alignment (которое устанавливает выравнивание текста, отображенного в ColumnHeader). Следующий пример кода создает четыре объекта ColumnHeader и устанавливает их свойства Text и Width:

Dim colX As ColumnHeader ‘ Объявление переменной.
Dim intX As Integer ‘ Переменная счетчика.
For intX = 1 To 4
Set colX = ListView1.ColumnHeaders.Add()
colX.Text = «Field » & intX
colX.Width = ListView1.Width / 4
Next intX

Настройка текста колонки свойством SubItems

Обратите внимание, что в любом из видов, кроме Report, объект ListItem отображает только одну подпись — свойство Text. Но в режиме Report каждый объект ListItem может иметь несколько других текстовых пунктов. Например, в рис. 2.11 «Путешествие автостопом по Visual Basic. » имеет подпункты «автор» («Вон, Уильям Р.»), «год» (1996) и «номер ISBN», связанные с ним. Каждый из этих текстовых пунктов — свойства объекта ListItem, определенные его свойством SubItems. Далее, поскольку может иметься любое число этих текстовых пунктов, свойство SubItems — это, фактически, массив строк. Таким образом, чтобы установить автора, год и номер ISBN объекта ListItem, код мог бы выглядеть следующим образом:

Читать еще:  Excel vba впр

‘ Имя элемента управления — lvwAuthors.
lvwAuthor.ListItems(23).Text = _
«Hitchhiker’s Guide to Visual Basic and SQL Server»
lvwAuthor.ListItems(23).SubItems(1)= _
«Vaughn, William R.»
lvwAuthor.ListItems(23).SubItems(2)= «1996»
lvwAuthor.ListItems(23).SubItems(3)= » 1-55615-906-4″

Подпункты зависят от наличия ColumnHeaders

И наличие, и количество подпунктов зависят от наличия и количества объектов ColumnHeader. То есть нельзя установить какие-либо подпункты, если нет никаких объектов ColumnHeader. Далее, количество объектов ColumnHeader определяет число подпунктов, которые можно установить для объекта ListItem. И количество подпунктов всегда на один меньше, чем количество объектов ColumnHeader. Это происходит потому, что первый объект ColumnHeader всегда связан со свойством Text объекта ListItem, как показано на рис. 7A.12:

Рис. 7A.12 Первый ColumnHeader и подпункты

Таким образом, если число объектов ColumnHeader в вышеупомянутом примере — 4, то максимальный возможное число подпунктов, которые можно установить — 3.

Listview vba excel

Hi. I have the following problem: On a userform I need to show some
(editable) data in a grid. I am using a listview control.

Since for some unknown reason the HitTest method refuses to work when
in Report mode, giving me erorrs even if I have a single line in the
HitTest event: «debug.print X» . on MouseUp I detect (with
SendMessage(lsvTruckingCharges.hWnd, LVM_SUBITEMHITTEST, 0&, hti)) the
subitem the user has clicked on. Now I need to position a textbox/a
combo box/a date-time picker in the cell’s place, for editing,
depending on the column’s type.

I have started testing with a texbox, with the code (snip):

With txtFloat
‘Set its text:
.Text = lsvTruckingCharges.ListItems(lngRow +
.SelStart = 0
.SelLength = Len(.Text)

‘Set its dimensions:
.Width = lsvTruckingCharges.ColumnHeaders(lngCol + 1).Width
.Height = lsvTruckingCharges.ListItems(lngRow + 1).Height

‘Position it:
.Left = lsvTruckingCharges.Left +
lsvTruckingCharges.ColumnHeaders(lngCol + 1).Left
.Top = lsvTruckingCharges.Top +
lsvTruckingCharges.ListItems(lngRow + 1).Top
End With

The problem is that the textbox DISAPPEARS behind the listview, and no
amount of Zorder will show it. What can I do ? Where is the problem
. I did something similar in VB (not VBA) and it works like a
charm. Do ai have any alternatives ?

Thanks a lot
Alex. Nitulescu

Since you didn’t say what error you encountered and didn’t show the code, I am guessing. The problem with the Hit Test API code maybe due to not having declared the LVHITTESTINFO structure or an improper variable assignment to a variable in it. Here is the method I use. This works for ListViews 5.0 and 6.0. The return value is a Variant Array that contains the Row (element 0) and the Column (element 1).

(place this code in a VBA Module)

‘List View Hit Test constants
Private Const LVHT_ONITEMICON As Long = &H2
Private Const LVHT_ONITEMLABEL As Long = &H4
Private Const LVHT_ONITEMSTATEICON As Long = &H8

flags As Long
item As Long
subitem As Long
End Type

Public Function GetSubItemRowCol(LV As ListView, ByVal x As Single, ByVal y As Single) As Variant

Dim RetVal
Dim HitData(1)

With Hit
.Pt.x = x
.Pt.y = y
.flags = LVHT_ONITEM
End With

RetVal = SendMessage(LV.hWnd, LVM_SUBITEMHITTEST, 0&, Hit)
HitData(0) = Hit.item
HitData(1) = Hit.subitem

( This code is for the MouseUp event)

Private Sub ListView1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As stdole.OLE_XPOS_PIXELS, ByVal y As stdole.OLE_YPOS_PIXELS)

Dim Col
Dim Row
Dim RetVal

RetVal = GetSubItemRowCol(ListView1, x, y)
Row = RetVal(0)
Col = RetVal(1)

If you have any problems, contact me vai email at

Leith Ross

Thank you, Leith, for your answer.

No, the problem is NOT in the specified API code, that works fine, the
problem is in the fact that I can’t put the (editable) text box ON TOP
OF THE listview. On click, I position and dimension it correctly (I
verified that), only it cannot go in front of the listview, it always
goes behind it, therefore being invisible. It looks like for some
reason the listview is always on top of any other control (window).
However, a similar code in VB, with VB’s controls, works just fine — in
VBA, however.

got the same issue as you. There is no way you can force the Listview
to respect Ordering on the MSForms Form.
It seems most ActiveX controls except the standard MSForms controls,
behave like this on a MSForms Form.
I have not found any workaround for this except creating a COM addin
with VB, and only use VB forms.

Utiliser le contrГґle ListView en VBA Excel

Table des matières

Ce document dГ©crit l’utilisation du contrГґle ListView dans un UserForm, en VBA Excel.
Le contrГґle ListView fait partie des Common Controls Visual Basic 6.0 (mscomctl.ocx).

Toutes les procГ©dures ont Г©tГ© testГ©es Г partir d’Excel2002.

Article lu fois.



Publié le 7В octobreВ 2006В — Mis à jour le 16В novembreВ 2007В

Liens sociaux

I. Description▲

Le contrГґle ListView permet d’afficher des informations sous diffГ©rentes prГ©sentations. Les donnГ©es visualisГ©es peuvent ГЄtre issues de sources trГЁs diverses: La saisie d’un formulaire, le contenu de fichiers, le rГ©sultat de requГЄtes SQL.

Quatre modes d’affichage sont disponibles:
В В В В В Icone (Constante lvwIcon)
В В В В В Petit Icone (Constante lvwSmallIcon)
В В В В В Liste (Constante lvwList)
В В В В В DГ©tails (Constante lvwReport)

Une fois stockГ©es dans la ListView, les donnГ©es sont facilement manipulables. Il est possible de changer le mode d’affichage, trier les colonnes, supprimer ou ajouter des lignes, appliquer une mise en forme, rГ©exporter le contenu de la ListView. Des images et icГґnes peuvent ГЄtre associГ©es aux items d’une ListView.

Les chapitres suivants prГ©sentent principalement des exemples en mode «DГ©tails».

II. Exemples d’utilisation▲

II-A. Alimenter une ListView▲

Chaque ligne d’une ListView peut ГЄtre dГ©finie en 2 parties:
ListView1.ListItems(x) spГ©cifie la ligne x et la 1ere colonne de cette ligne.
ListView1.ListItems(x).ListSubItems(y) permet de spГ©cifier les colonnes adjacentes. Par exemple ListView1.ListItems(5).ListSubItems(1) indique la 2eme colonne dans la 5eme ligne de la ListView.

La syntaxe pour ajouter une ligne:

ListView1.ListItems.Add [ Index ], [ Key ], [ Text ], [ Icon ], [ SmallIcon ]

[Index] : Facultatif.
Indique le numГ©ro de ligne ou doit ГЄtre ajoutГ© la nouvel Г©lГ©ment. Les donnГ©es sont ajoutГ©es Г la suite de la derniГЁre ligne si l’argument n’est pas spГ©cifiГ©.

[Key] : Facultatif.
Attribue une clГ© unique qui fiabilise l’identification des lignes.

[Text] : Facultatif.
Indique le texte qui va s’afficher dans la premiГЁre colonne de la ListView.

[Icon] : Facultatif.
SpГ©cifie l’image qui doit s’afficher quand la ListView est en mode lvwIcon.

[SmallIcon] : Facultatif.
SpГ©cifie l’image qui doit s’afficher quand la ListView est en mode lvwSmallIcon, lvwList ou lvwReport.

La syntaxe pour ajouter un sous Г©lГ©ment (Les colonnes de droite dans la ligne spГ©cifiГ©e):

ListView1.ListItems( 1 ).ListSubItems.Add [ Index ], [ Key ], [ Text ], [ ReportIcon ], [ TooltipText ]

1 :
SpГ©cifie le numГ©ro de ligne dans la ListView.

[Index] : Facultatif.
Indique le numГ©ro de colonne pour l’ajout d’une donnГ©e. La valeur 1 correspond Г la 2eme colonne d’une ListView.

Читать еще:  Как создать olap куб excel

[Key] : Facultatif.
Attribue une clГ© unique qui fiabilise l’identification des lignes.

[Text] : Facultatif.
Indique le texte qui va s’afficher dans la ListView.

[ReportIcon] : Facultatif.
Permet d’afficher un icГґne ou une image dans le sous Г©lГ©ment spГ©cifiГ©.

[TooltipText] : Facultatif.
Permet d’ajouter une infobulle dans le sous Г©lГ©ment spГ©cifiГ©.

La syntaxe pour dГ©finir les colonnes:

Pour ajouter des Г©lГ©ments dans les colonnes, vous devez prГ©alablement dГ©finir leur nombre, dimensions et textes d’entГЄte:

ListView1.ColumnHeaders.Add [ Index ], [ Key ], [ Text ], [ Width ], [ Alignment ], [ Icon ]

[Key] Facultatif.
Attribue une clГ© unique qui fiabilise l’identification des entГЄtes.

[Text] : Facultatif.
SpГ©cifie le texte qui va s’afficher dans l’entГЄte.

[Width] : Facultatif.
SpГ©cifie la largeur de la colonne. La valeur par dГ©faut est de 72 points.

[Alignment] : Facultatif.
SpГ©cifie l’alignement dans la colonne. Les constantes disponibles: lvwColumnLeft(Valeur par dГ©faut), lvwColumnCenter, lvwColumnRight.

[Icon] : Facultatif.
SpГ©cifie l’image qui doit s’afficher dans l’entГЄte.

Ce premier exemple montre le principe de remplissage d’une Listview.

Cette macro est un exemple simplifiГ© et il est bien entendu possible de crГ©er des boucles afin d’optimiser le remplissage.

II-B. Lire et Modifier le contenu des lignes▲

Une fois affichГ©es dans le contrГґle ListView, les donnГ©es peuvent ГЄtre lues et modifiГ©es par macro.
Cette procГ©dure boucle sur l’ensemble de la ListView et transfГ©re les informations dans une feuille de calcul.

Les informations contenues dans la ListView peuvent facilement ГЄtre modifiГ©es:
Par exemple, changer le texte dans la 3eme colonne de la premiГЁre ligne.

Un autre exemple pour modifier le texte dans la 1ere colonne de la 4eme ligne.

Les donnГ©es de la 1ere colonne peuvent ГЄtre modifiГ©es manuellement dans le contrГґle ListView.
Vous pouvez empГЄcher la modification manuelle des donnГ©es en spГ©cifiant la valeur 1 (lvwManual) dans la propriГ©tГ© LabelEdit.

II-C. Utiliser les clГ©s (Key)▲

Vous avez vu dans le chapitre II-A qu’il est possible d’attribuer des clГ©s uniques aux Г©lГ©ments d’une ListView (Items, SubItems, EntГЄtes de colonnes). Quelques soient les dГ©placements effectuГ©s (suite Г un tri par exemple), vos donnГ©es peuvent ГЄtre retrouvГ©es Г partir de cette clГ© d’identification.

Cet exemple rГ©cupГЁre le contenu de l’Item auquel est attribuГ© la clГ© «K20».
La procГ©dure renvoie une erreur si la clГ© n’existe pas dans la ListView.

Et pour rГ©cupГ©rer un sous Г©lГ©ment spГ©cifique «K21» dans l’Г©lГ©ment «K20»:

Vous pouvez aussi rГ©cupГ©rer la clГ© d’une ligne.
La procГ©dure renvoie une chaine vide si aucune clГ© n’est attribuГ©e.

Cette macro permet d’attribuer une clГ© au ListItem de la 2eme ligne. Si une clГ© existait dГЁja pour cet Г©lГ©ment, celle ci sera Г©crasГ©e. Par contre si vous essayez d’attribuer une clГ© dГ©ja associГ©e Г un autre Г©lГ©ment, la procГ©dure renvoie un message d’erreur: Ce qui est logique puisque la clГ© doit ГЄtre unique.

II-D. Supprimer des lignes▲

Vous avez la possibilitГ© de supprimer des lignes prГ©cises dans la ListView.

Excel 2010 VBA Tables and ListView

Excel 2010 VBA Tables and ListView

Excel 2010 VBA Tables and ListView

I am currently building an SQL generator that will spit out .Sql files based upon selections made in an excel document. I am using Excel as it is a great storage container for the changing values. In my first prototype i had multiple worksheets setup where my vba would call a particular worksheet to get the relevant data. Eg. I have a Profile Options worksheet, Customer Options. The number of Excel worksheets were becoming a bit excessive, so i have started to redesign the system. This time i thought about using tables as they can be resized and it means multiple tables can be used on one worksheet. this means less worksheets in the workbook.

Previously i was using the following to loop through a worksheet and populate a ListView control.

CODE —> vba

CODE —> vba

However no data is showing up on the ListView control. Ideally i would like the code to loop through and populate all enteries in the table. Once i get that sorted i can replicate the code for my other ListViews.Then move on to resizing the tables as needed.

I can give more information if needed

Many Thanks in advance guys

RE: Excel 2010 VBA Tables and ListView

How are your tables laid out on the sheet? Please be specific.


Just traded in my OLD subtlety.
for a NUance!

RE: Excel 2010 VBA Tables and ListView

Sorry for the late reply, i got pulled on to another task breifly. I have several tables on one sheet, the ProfileOptions table for example has two columns The header Row is Column «S2» and «S3», i also have a single column Table called Alias whose header Row is «V2». I will be adding more tables as time goes on, and data will be added to each table and removed from the table depending on the client that is being set up. I chose to use tables as i thought they would be a better option. Well untill i tried to get the values in to a ListView.

RE: Excel 2010 VBA Tables and ListView


Can you explain that? Does not make any sense.

Also whats going on in columns A-R?


Just traded in my OLD subtlety.
for a NUance!

RE: Excel 2010 VBA Tables and ListView

When creating a table in Excel you give each column of the table a name. So that is the header Row. in my example i have Cell S2 and Cell T2 as the header row, then the data starts on S3 and T3
I am using columns A to S for other options that are needed for the file.

Appologies, i realise i made a typo and it should have read S2 and T2

RE: Excel 2010 VBA Tables and ListView

Ok A-R is options. s&t are first table, u separator, v a list.

Whats in row 1 above your tables?


Just traded in my OLD subtlety.
for a NUance!

RE: Excel 2010 VBA Tables and ListView

Row 1 above the tables is used just to give a title to the tables.

Yeah A-R is options, S and T is the first Table, U is blank column and V is setup as a table (although it is only one column)

RE: Excel 2010 VBA Tables and ListView


Just traded in my OLD subtlety.
for a NUance!

RE: Excel 2010 VBA Tables and ListView

Yeah its a structured table, created by using insert table and selecting my table has a header.

RE: Excel 2010 VBA Tables and ListView

Yeah I am. Inserted the table by selecting insert table and ticking my table has headers

RE: Excel 2010 VBA Tables and ListView


Just traded in my OLD subtlety.
for a NUance!

Ссылка на основную публикацию