Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA Function Matrix Declaration
#1
Hallo zusammen...

ich bräuchte mal wieder Hilfe bitte..

und zwar möchte ich eine Matrix in meiner selber geschriebenen Function, über mehrere Tabellenblätter nutzen. Momentan ist die Matrix als Range Deklariert da sie nur im Tabellenblatt das aktiv war genutzt wurde z.B. (A1:A5).

Nun bräuchte ich aber das ganze für z.B. (Tabelle1!A1:A5) aus Tabelle2 aufgerufen! 

Wie muss ich das deklarieren?
Eine Menge reden, aber nichts sagen können viele...
Antworten Top
#2
Hallo,

ich möchte KEINEN Streit anzetteln, aber mein Vorschlag ist:

Code:
Sub F_en()

Ar = Sheets(1).Range("A5:F34")

'mach was

end sub

Ar ist ein 2-dim Array.

mfg
Antworten Top
#3
Das ist ein fester Bereich, ich übergebe den Bereich über die Function (Formel im Tabellenblatt)
Eine Menge reden, aber nichts sagen können viele...
Antworten Top
#4
Hallo,

Du kannst einer Funktion doch mehr als einen Parameter übergeben, gib halt auch das Worksheet mit.
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#5
Meine Function sieht momentan so aus:

Code:
Function WE(Suchtag As String, SuchtageBereich As Range, SuchName As String, SFr?h As Range, SSp?t As Range, SNacht As Range, Optional ByVal Datsuch As Integer) As Integer
Dim Spalte As Integer
Dim Cell As Range
Dim i As Integer
Dim g As Integer
Dim h As Integer
Dim A As Integer

'Suchtag ist der zu suchende Wochentag / Feiertage
'SuchtageBereich ist der Bereich in dem der Tag/Begriff gesucht werden soll
'SFr?h ist der Suchbereich Fr?hschicht
'SSp?t ist der Suchbereich Sp?tschicht
'SNacht ist der Suchbereich Nachtschicht
'SuchName ist die zu suchende Person


If Datsuch = 1 Then

For Each Cell In SuchtageBereich

     If Cell.Value > "" And Cell.Value <= Date Then
       If Format(Cell, "DDDD") = Suchtag Then
           For i = SFr?h.Cells(1).Row To SFr?h.Cells(SFr?h.Cells.Count).Row
                 If Cell <> "" Then
                   If Cells(i, Cell.Column).Value = SuchName Then A = A + 1
                 End If
           Next
           For g = SSp?t.Cells(1).Row To SSp?t.Cells(SSp?t.Cells.Count).Row
                  If Cell <> "" Then
                   If Cells(g, Cell.Column).Value = SuchName Then A = A + 1
                  End If
           Next
           For h = SNacht.Cells(1).Row To SNacht.Cells(SNacht.Cells.Count).Row
                  If Cell <> "" Then
                   If Cells(h, Cell.Column - 1).Value = SuchName Then A = A + 1
                  End If
           Next
        End If
      End If

Next

Else

For Each Cell In SuchtageBereich

     If Cell.Value > "" Then
       If Format(Cell, "DDDD") = Suchtag Then
           For i = SFr?h.Cells(1).Row To SFr?h.Cells(SFr?h.Cells.Count).Row
                 If Cell <> "" Then
                   If Cells(i, Cell.Column).Value = SuchName Then A = A + 1
                 End If
           Next
           For g = SSp?t.Cells(1).Row To SSp?t.Cells(SSp?t.Cells.Count).Row
                  If Cell <> "" Then
                   If Cells(g, Cell.Column).Value = SuchName Then A = A + 1
                  End If
           Next
           For h = SNacht.Cells(1).Row To SNacht.Cells(SNacht.Cells.Count).Row
                  If Cell <> "" Then
                   If Cells(h, Cell.Column - 1).Value = SuchName Then A = A + 1
                  End If
           Next
        End If
      End If

Next

End If

WE = A

End Function

nun möchte ich mit der Formel aber die Berechnung nicht im Aktiven Tabellenblatt machen, sondern eben in einem andern! Allerdings wird die Formel dann eben halt nicht berechnet! Meine Vermutung war dann eben jetzt, dass das Tabellenblatt eben nicht richtig in die Dimensionierung mit übergeben wird...
Eine Menge reden, aber nichts sagen können viele...
Antworten Top
#6
Ich hab den Fehler für "Each cell" muss das Tabellenblatt aktiv sein...
Eine Menge reden, aber nichts sagen können viele...
Antworten Top
#7
Hallo,

Fragezeichen im Variablennamen? Geht das bei dir? Bei mir werden die Zeilen rot angzeigt.
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#8
die Fragezeichen sind Umlaute die es beim Kopieren wohl nicht erkannt hat...
Eine Menge reden, aber nichts sagen können viele...
Antworten Top
#9
Moin!

VBA speaks english.
Deshalb sollte man es sich angewöhnen, ausschließlich (erlaubte) Zeichen zu verwenden, die auch auf der US-Tastatur vorhanden sind.
Schließlich würde kein Däne eine UDF Øre nennen (auch wenn das funktioniert), wenn das produktiv auch bei uns eingesetzt werden muss … 
Zitat:Ich hab den Fehler für "Each cell" muss das Tabellenblatt aktiv sein...

Nein!
Steffl schrieb Dir doch bereits, was Du machen musst (Parameter $Sh oder in der langen Schreibweise TabellenName As String)

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#10
Jetzt sitze ich auf der Leitung Ralf... Ich habe bereits Separat (in der Syntax) versucht den Tabellennamen mit in die Formel zu integrieren, das hat jedoch auch nicht funktioniert... könntest du mir das näher in einem Beispiel oder anhand meines codes zeigen?? Ich ab schon Google bemüht jedoch ohne Erfolg...
Eine Menge reden, aber nichts sagen können viele...
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste