Anzeige
Archiv - Navigation
1532to1536
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Variable aus Personal.xslb nutzen

Variable aus Personal.xslb nutzen
19.01.2017 08:15:04
vbAmateur
Hallo zusammen,
ich versuche gerade in einer Funktion meiner Arbeitsmappe in Excel ein Makro aus Personal.xslb aufzurufen. Das funktioniert soweit auch.
Aber ich will mit der ausgerechneten Variable von Personal.xslb in der Funktion weiterrechnen und das bekomme ich nicht hin...
Dim zeilenzahl As Integer
Sub alle_K_erstellen()
zeilenzahl = Application.Run("personal.xlsb!zeilen_zaehlen")
MsgBox zeilenzahl
end sub

Das ist meine Funktion und das Personal.xlsb Makro berechnet die Anzahl der Zeilen und speichert die Zahl unter der Variable zeilenzahl.
Diese habe ich als

Public zeilenzahl as Integer
deklariert.
ich hoffe jemand kann mir weiterhelfen.
Danke schonmal im Voraus.
Gruß vbAmateur

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variable aus Personal.xslb nutzen
19.01.2017 08:42:50
mumpel
Hallo!
Die Prozedur in der Personal.xlsb sollte eine Funktion (Funkction) mit Rückgabewert sein. Der Wert sollte Long sein, nicht Integer. Du kannst dann leicht damit rechnen.
In der personal.xlsb:
Public Function Test1(Optional Zahl1 As Long = 3, Optional Zahl2 As Long = 42) As Long
  Test1 = Zahl1 + Zahl2
End Function

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0

In der Datei:
Sub gg()
On Error Resume Next

Dim n As Long
Dim m As Long

n = Application.Run("Personal.xlsb!Test1")
m = n + Range("A1").Value

MsgBox m
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0

Gruß, René
Anzeige
AW: Variable aus Personal.xslb nutzen
19.01.2017 08:54:27
vbAmateur
Danke für deine schnelle Antwort.
Wenn ich das auf mein Programm anpasse erhalte ich beim aufrufen der Zeile
m = Application.Run("personal.xlsb!zeilen_zaehlen", zeilenzahl)
einen Laufzeitfehler 450: falsche Anzahl von Argumenten oder ungültige Zuweisung von Eigenschaften.
Gruß vbAmateur
AW: Variable aus Personal.xslb nutzen
19.01.2017 09:02:09
mumpel
Hast Du die Funktion auch sauber aufgebaut? Parameter kannst Du nur übergeben wenn sie in der Funktion enthalten und nicht optional sind. Die Anzahl der Parameter sind auch wichtig. Wenn die Funktion z.B. zwei nicht optionale Parameter fordert musst Du beide Parameter übergeben.
Anzeige
AW: Variable aus Personal.xslb nutzen
19.01.2017 14:59:44
vbAmateur
was meinst du mit Parameter die optional sind?
die Funktion ist sauber aufgebaut. Benutze jedoch mehrere Variablen, deshalb funktioniert es wohl nicht.
Kann ich eine Variable besonders hervorheben um diese zu übergeben?
AW: Variable aus Personal.xslb nutzen
19.01.2017 17:55:44
mumpel
Wie sieht denn Deine Funktion aus?
AW: Variable aus Personal.xslb nutzen
20.01.2017 07:58:36
vbAmateur

Public Function zeilen_zaehlen()             'zählt wieviele zeilen in spalte B beschrieben  _
sind
zeilenzahl = 0
Dim anfang%, ende%
ende = Cells(Rows.Count, 2).End(xlUp).Row
Range("B1").Select
anfang = 1
For i = anfang To ende
If Cells(anfang, 2)  "" Then
zeilenzahl = zeilenzahl + 1
End If
Next
End Function

Anzeige
AW: Variable aus Personal.xslb nutzen
20.01.2017 08:16:05
mumpel
Diese Funktion enthält keine Parameter (in der Klammer), also darfst Du auch keine Parameter übergeben. Und einen Rückgabeparameter gibt es auch nicht. Versuch es wie folgt.
In der personal.xlsb:
Public Function zeilen_zaehlen() As Long

Dim anfang      As Long
Dim ende        As Long
Dim zeilenzahl  As Long
Dim i           As Long

    zeilenzahl = 0

    ende = Cells(Rows.Count, 2).End(xlUp).Row
    
    anfang = 1
    
    For i = anfang To ende
        If Cells(anfang, 2) <> "" Then
        zeilenzahl = zeilenzahl + 1
        End If
    Next
    
    zeilen_zaehlen = zeilenzahl
    
End Function

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0

Aufruf:
Public Sub Test()
On Error Resume Next

Dim n As Long
Dim m As Long

n = Application.Run("Personal.xlsb!zeilen_zaehlen")
m = n + Range("A1").Value

MsgBox m
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0

P.S.: Bitte gewöhne Dir an Variable sauber zu deklarieren. Damit Du zur Deklaration gezwungen wirst setze die Anweisung Option Explicit am Anfang der Module. Dann müssen wir nicht nachträglich erst alles deklarieren.
Anzeige
AW: Variable aus Personal.xslb nutzen
20.01.2017 10:02:22
Florian23
super! vielen vielen Dank.
endlich funktioniert es.
das hat mich vielleicht Nerven gekostet...
Man kann 1 Variable d.Personal.xslb nur nutzen, …
19.01.2017 09:14:02
Luc:-?
…Amateur,
wenn diese eindeutig dort festgestellt wdn kann. D.h., die Personal.xlsb-KlassenModule müssen (ebenso wie ggf das dortige VBA-Projekt) über unique eigene (interne) CodeNames verfügen und die Global­Variable muss einem solchen zugeordnet und damit (extern) ansprechbar sein. Einfacher wäre es dann sicher, wenn es sich bei der Zeilenzähl-Prozedur tatsächlich um eine Fktsprozedur handeln würde, denn die könnte den ZählWert an das aufrufende Pgm zurückliefern (davon geht René wohl aus), was die Global­Variable, die übrigens besser As Long zu deklarieren wäre, überflüssig machen würde.
Gruß, Luc :-?
Besser informiert mit …
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige