ich bin neu hier und habe kaum VBA kenntnisse. Ich möchte in VBA folgendes programmieren. Es soll durch einen klick auf einem Button eine Excel-Datei geöffnet werden und der Inhalt aus Spalte A in eine Listbox übertragen werden. Zusätzlich soll aus Spalte B die Summe berechnet werden und in einer Textbox ausgegeben werden. Als letztes sollen aus Spalte H die Anzahl Unterschiedlicher Werte bestimmt werden(Typ String).
Beim letzten Punkt komem ich nicht weiter. Irgendwie schaff ich es nicht das Dictionary-Object auf die richtige Mappe zu beziehen. Ich bekomme hier immer den Wert 0 als ergebnis raus.
Habt ihr eine Idee wie man das lösen könnte?
Ich hoffe das war einigermaßen verständlich erklärt.Ich würde mich freuenwenn ihr mir helfen könntet.
Private Sub CommandButton1_Click()
Dim i As Integer
Dim varDatei As Variant
Dim letztezeile As Integer
Dim wb1 As Workbook
Dim wb2 As Workbook
'Listbox leeren falls neue Datei geöffnet wird
ListBox1.Clear
Set wb1 = ThisWorkbook
varDatei = Application.GetOpenFilename("Exceldateien, *xls?, Alle Dateien, *.*", 1, "Bitte _
_
_
Datei auswählen")
Set wb2 = Workbooks.Open(varDatei, ReadOnly:=True)
'Anzahl der Zellen mit Wert in Spalte1 zählen
If varDatei False Then
letztezeile = Cells(Rows.Count, 1).End(xlUp).Row
'Listbox füllen
For i = 1 To letztezeile
ListBox1.AddItem (Cells(i + 1, 1).Value)
Next i
'Summe aus Spalte 2 bestimmen
SumPark = WorksheetFunction.Sum(Columns(2))
TextBox1.Value = SumPark
MsgBox AnzahlWerte(Tabelle1.Range("H1:H20"))
wb2.Close (True)
End If
End Sub
Function AnzahlWerte(Bereich As Range) As LongDim Zelle As Range, objSD As Object
Set objSD = CreateObject("scripting.dictionary")
'Füllen des Dictionary-Objektes
For Each Zelle In Bereich
If Zelle "" Then objSD(Zelle.Value) = 0
Next
AnzahlWerte = objSD.Count
End Function