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
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
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
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
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???
das freut mich jetzt nicht zu hören. gibt es keine Möglichket "schnell" aus einem Array Dinge wie Max oder so zu bestimmen???
Ich möchte kostenlos eine Frage an die Mitglieder stellen:
Ähnliche Themen:
- VBA: Worksheetfunction.substitute
- VBA: Bei WorksheetFunction.sum wird automatisch gerundet - warum? und was dagegen tun?
- Tabellennamen aus Zellen entnehmen und in Match-Formel verwenden (VBA)
- Hilfe zu einem Code: automatisch speichern sobald was in Spalte C eingetragen wird
- Makro soll Zelle auf Zahl prüfen