Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

WorksheetFunction





Frage

Hallo Excel-Kenner, ich habe eine Frage bezüglich der entfremdeten Verwendung der Excelfunktionen. Sicher ist bekannt das man Excelfunktionen in VBA verwenden kann (Application.WorksheetFunction). Dies würde ich auch gern nutzen da diese Funktionen sehr schnell arbeiten. Aber eben nicht auf ein Tabellenblatt anwenden sondern auf eine Array-Variable. Dies funktioniert aber (scheinbar) nur solange die Arrayvariable nicht "größer" als ein Tabellenblatt ist. Kann man diese Beschränkung irgendwie umgehen?? Mein Code als Beispiel: [code] Sub test() Dim a As Variant, i As Long With ThisWorkbook.Worksheets("Tabelle3") ReDim a(65535) For i = 0 To 65535 a(i) = 6 - i Next i Debug.Print Application.WorksheetFunction.Max(a) End With End Sub [/code] wenn ich den Index der variable erhöhe funktioniert es nicht mehr :( Schon mal vielen Dank für Eure Mühe Viele Grüße Tino

Antwort 1 von nighty

hi all :)

gruss nighty

Option Explicit
Sub test()
Dim i As Long
With ThisWorkbook.Worksheets("Tabelle3")
ReDim a(77777) As Variant
For i = 0 To 77777
a(i) = 6 - i
Next i
Print Application.WorksheetFunction.Max(a)
End With
End Sub

Antwort 2 von nighty

hi tino :)

fehler war :))

du wolltest ja aus einer nicht dimensionierten var

Dim a As Variant

ein eindimensionales redim angeben

ReDim a(65535)

gruss nighty

Antwort 3 von powder

Hallo Nighty,

eigentlich war das kein Problem, denn der Code wie ich ihn geschrieben hatte funktioniert (oder habe ich jetzt etwas falsch verstanden). Nur wenn ich den Index bei mir erhöhe dann geht es nicht mehr, so auch bei deinem Code. Ich denke da dies die normale Grenze der Excel-Zeilen ist oder?

Viele Grüße
Tino

Antwort 4 von powder

Das mit der undimensionierten Variable klappt ohne Probleme da Variant ja so etwas wie universal ist.

Antwort 5 von nighty

hi powder :)

excel hat noch andere arten der dimensionierung da ist bei 65535 zeichen natuerlich ende.

gruss nighty

Antwort 6 von powder

Hmmm,
das freut mich jetzt nicht zu hören. gibt es keine Möglichket "schnell" aus einem Array Dinge wie Max oder so zu bestimmen???