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.

Eine VBA Function erstellen
#1
Hallo zusammen

ich hab noch nie eine VBA- Function erstellt und bräuchte bitte einmal etwas Unterstützung und Rat!

Ich habe erst eine Sub erstellt und wollte das dann in eine Function packen das Ergebnis sieht so aus und gibt nur einen Fehler aus...


 
Code:
Option Explicit

Function RuheZeiten(L As Long) As String
Dim RuheZeit As String
Dim G As Integer
Dim Cell As Range

For Each Cell In Range(L)
       If Cell.Value <> "" And Cell = Cell.Offset(, 1) Then
       G = G + 1
       Else
       G = 0
       End If
       If G > 5 Then
       RuheZeit = "Ruhezeit!"
       G = 0
       End If
       
Next

If RuheZeit = "" Then
RuheZeiten = ""
Else
RuheZeiten = RuheZeit
End If

End Function

ich vermute, dass mein Fehler in der Marix liegt.. kann mir jemand helfen?
Eine Menge reden, aber nichts sagen können viele...
Antworten Top
#2
Hallöchen,

du übergibst L As Long und schreibst dann einfach

For Each Cell in Range(L) '<-- geht natürlich nicht !!!

Soll L eine Zeile darstellen ? --> Rows(L)

Dann so ...

For Each Cell in Rows(L).Cells

Besser ? Und du hast den Code sicher schon in einem allgemeinen Modul stehen ... :19:
VG Sabina

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
Antworten Top
#3
Hallo,

Du übergibst dem Argument von Range einen Long-Wert, was nicht funktionieren kann. L müsste ein String (als Bereichsadresse) sein
oder Du deklarierst L direkt als Range. Kommt darauf an, was Du machen möchtest. 

Wenn L eine Bereichadresse ist, z.B. "A1:A4", dann bliebe ggf. For Each Cell In Range(L) erstmal so, wenn L ein Range-Objekt wäre,
dann würde sich das ggf. ändern zu For Each Cell In L.

Egal wie, beachte die Datentypen, die Du übergibst bzw. anlegst.

Oh, sehe gerade, Sabina alias Flotter Feger ist auch hier. Schön & Freu Smile

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 2011-2019 & 2020-2022 :: 10 Awards
https://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
[-] Folgende(r) 1 Nutzer sagt Danke an maninweb für diesen Beitrag:
  • Frogger1986
Antworten Top
#4
Vielen Dank! Als String hatte ich versucht, hat ihm aber nicht gefallen! Habs nun als Range übergeben, so klappts!!!
Eine Menge reden, aber nichts sagen können viele...
Antworten Top


Gehe zu:


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