Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Version von ListView Control feststellen

Version von ListView Control feststellen
15.05.2024 16:09:59
chagbox
Hallo zusammen

Gibt es eine Möglichkeit herauszufinden, ob ein in einem Userform eingebundenes ListView Control Element Version 5.0 oder 6.0 ist? Danke und Gruss, Henner
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Version von ListView Control feststellen
15.05.2024 18:35:38
{Boris}
Hi,

was ist denn der Hintergrund Deiner Frage?
Hat 6.0 zusätzliche Eigenschaften / Methoden?

VG, Boris
AW: Version von ListView Control feststellen
15.05.2024 18:39:23
{Boris}
Hi,

ich hab mal ChatGPT bemüht. Die Antwort habe ich nicht getestet - aber vielleicht passt es ja oder hilft Dir zumindest, eine Lösung zu finden.

Um festzustellen, ob ein ListView-Control in einem UserForm in Excel VBA die Version 5.0 oder 6.0 ist, können Sie die Version-Eigenschaft des Controls verwenden. Leider gibt es keine direkte Version-Eigenschaft für das ListView-Control, aber Sie können dies über die ProgID-Eigenschaft feststellen.

Hier ist ein Beispiel, wie Sie dies tun können:

Sub CheckListViewVersion()

Dim lv As Object
Dim lvProgID As String

' Annahme: Das ListView-Control heißt "ListView1"
Set lv = UserForm1.ListView1
lvProgID = lv.ProgID

If lvProgID = "MSComctlLib.ListViewCtrl.2" Then
MsgBox "ListView Version: 6.0"
ElseIf lvProgID = "MSComctlLib.ListViewCtrl.1" Then
MsgBox "ListView Version: 5.0"
Else
MsgBox "Unbekannte ListView Version"
End If
End Sub


VG, Boris
Anzeige
AW: Version von ListView Control feststellen
16.05.2024 11:55:30
chagbox
Hallo Boris

Danke für Deine Antwort. ChatGPT ist bei uns in der Firma global gesperrt ;-)
Habe es mal versucht mit Deinem Code. Laufzeitfehler bei lvProgID = lv.progID: Objekt unterstützt Eigenschaft nicht.

Zum Hintergrund: Ich habe grosse Probleme mit einem VBA Projekt und bin verzweifelt auf der Fehlersuche. Beim Ausführen eines Makros (Öffnet am Ende eine UserForm) wird die Ausführung unterbrochen mit Meldung "Automatisierungsfehler". Nach Klick auf OK schliesst und öffnet sich Excel nach 3-4 Sekunden wieder mit Dateinamenerweiterung "(version 1)" und Dateiendung .xlsb anstelle von .xlsm. sowie dem Hinweis "(Wiederhergestellt)". Ab da funktioniert alles tadellos in der wiederhergestellten Datei. Der Fehler tritt allerdings nur auf unserem firmeninternen Netzlaufwerk auf, kopiere ich die Datei auf ein mit SharePoint synchronisiertes Laufwerk gibt es keine Probleme. Auf dem Netzlaufwerk habe ich jedoch einige andere VBA Tools problemlos laufen. Error Handler ist integriert, wird aber ignoriert. Kommentiere ich testweise Zeilen aus, tritt der Fehler mal bei dieser und mal bei jener Zeile auf. In der UF gibt es keine activte oder initialization Routine. Nach dem Anlegen einer Kopie kam auch mal die Meldung, die Datei sei schwer beschädigt und könne nicht mehr repariert werden. Auf dem SharePoint Laufwerk funktioniert sie aber. Ich werde das Gefühl nicht los, dass es irgendein Problem mit einem Verweis - oder eben einem Element gibt. Eventuell weil ich die Datei auf dem SharePoint erstellt und dann auf das Laufwerk kopiert habe. Aktuell habe ich die ListView auf dem Prüfstand, weil es da 2 verschiedene Versionen gibt. Nun wollte ich mal "auslesen" welche LV Version ich bei den bestehenden Tools benutzt habe.

Vielleicht hat ja noch jemand eine Idee. Danke und Gruss, Henner

Anzeige
AW: Version von ListView Control feststellen
16.05.2024 12:45:50
{Boris}
Hi,

da bin ich am Ende überfragt. Eventuell ist irgendein Verweis gebrochen.
Ich lass die Frage offen.

VG, Boris
AW: Version von ListView Control feststellen
16.05.2024 13:38:36
schauan
Hallöchen,

Die ProgID gibt es z.B. bei den AddIns - siehe z.B. Application.COMAddIns(1).ProgID

Das Listview ist aus der bzw. einer mscomct*.ocx Aus welcher Version es stammt, kann ich auch nicht sagen, aber man kann schauen, welche mscomct* bei der verwendeten Excelversion aktiviert ist - im Prinzip so:

Sub MSComRef()

Dim refVar As VBIDE.Reference
For Each refVar In ThisWorkbook.VBProject.References
If InStr(UCase(refVar.Name), "MSCOM") Then MsgBox refVar.Description
Next
End Sub


Siehe dazu z.B. auch https://excelatfinance.com/xlf20/xlf-vba-references.php

Ich kenne solche bzw. ähnliche Probleme, auch mit der Zuweisung diverser Objektvariablen, von der Verwendung verschiedener Excelversionen. Schaue mal, ob das bei Dir zutrifft.

Eine Möglichkeit wäre die Programmierung in der niedrigsten Version. Es darf aber keiner die Datei mal in einer höheren Version abspeichern - auch ein Grund, Programm und Daten zu trennen ;-)

Eine anderer Ansatz wäre Late Binding - aber z.B. nicht gerade für Objekte auf einem Userform.

Eventuell spielt bei da auch das Thema Office 32/64 usw. in Zusammenhang mit den mscomct*.ocx mit rein.
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige