WorkSheetFunction - der Antibandwurm-Tipp

.. das wohl mächtigste Werkzeug in Bill Gates' Büro-Sippe. Ob reine Formeln, PowerQuery oder VBA. Hier bleiben kaum Wünsche unerfüllt.
Benutzeravatar
d'r Bastler
Beiträge: 683
Registriert: 29. Aug 2022, 13:20
Hat sich bedankt: 177 Mal
Danksagung erhalten: 91 Mal

WorkSheetFunction - der Antibandwurm-Tipp

#1

Beitrag von d'r Bastler »

Moin allerseits!

um die unendlichen Weiten des XL-Formel-Universums auch in VBA nutzen zu können, kann man sie über
Application.WorkSheetFunction.[englische Bezeichnung der Formel/Funktion]
in den Code einbinden. Was ein elender Bandwurm! In neueren XL-Version kann man immer schon mal auf das Application verzichten.

Hier noch eine Abkürzung, die ich in einem Allgemeinen Modul Public deklariere und dann in einer in jeder Sub wieder aufgerufenen Universal Sub für Alles befülle. Ein sinnvoller und sicherer Gebrauch, der -bei manchen so verpöhnten- Public Variablen.

Der Code (in ein Allgemeines Modul) zeigt neben wsf weitere Beispiele:

Code: Alles auswählen

Option Explicit
Public wb As Workbook, wsE As Worksheet, wsV As Worksheet, wsA As Worksheet, sPath As String
Public wsf As WorksheetFunction

Sub System()
    Set wb = ThisWorkbook
    Set wsE = wb.Sheets("Eingabe")
    Set wsV = wb.Sheets("Verarbeitung")
    Set wsA = wb.Sheets("Ausgabe")
    sPath = wb.Path
    
    Set wsf = WorksheetFunction
    
End Sub
Viel Spaß damit!
Folgende Benutzer bedankten sich beim Autor d'r Bastler für den Beitrag:
thowe
d'r Bastler von den VBAsteleien.de
Win 10 + Office 2019 & Win11 + Office 2021 + Visio 2019 pro & macOS.X15 + Office2019pro & Android12 & XL365
Benutzeravatar
thowe
Beiträge: 209
Registriert: 12. Sep 2022, 16:57
Hat sich bedankt: 79 Mal
Danksagung erhalten: 67 Mal
Kontaktdaten:

Re: WorkSheetFunction - der Antibandwurm-Tipp

#2

Beitrag von thowe »

Hallöchen,

danke für den Tipp:

ich habe das immer so gelöst.
Gleich vernünftig, schlechter, besser....?

Code: Alles auswählen

'This active Workbook
Public Property Get p_wb() As Workbook
    Set p_wb = Application.ActiveWorkbook
End Property

'Worksheet "Eingabe"
Public Property Get p_wksEingabe() As Worksheet
    Const pstr_wksEingabe As String = "Erhebungsbogen"
    Set p_wksEingabe = ActiveWorkbook.Worksheets(pstr_wksEingabe)
End Property

'... usw/usf

Folgende Benutzer bedankten sich beim Autor thowe für den Beitrag:
d'r Bastler
Sulprobil
Beiträge: 22
Registriert: 23. Sep 2022, 05:54
Hat sich bedankt: 3 Mal
Danksagung erhalten: 14 Mal
Kontaktdaten:

Re: WorkSheetFunction - der Antibandwurm-Tipp

#3

Beitrag von Sulprobil »

Hallo,

Man kann im VBA Editor auch direkt den internen Tabellennamen vergeben. Dann spart man sich eine Worksheet Variable:
Internen_Worksheet_Namen_setzen.jpg
Internen_Worksheet_Namen_setzen.jpg (98.07 KiB) 2390 mal betrachtet
Leider geht dies lediglich manuell, nicht via VBA. Man kann es also nur mit existierenden Worksheets via VBA nutzen.

Viele Grüße,
Bernd
Folgende Benutzer bedankten sich beim Autor Sulprobil für den Beitrag:
d'r Bastler
Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste