Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1744to1748
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

Funktion aufrufen mit Rückgabewert

Funktion aufrufen mit Rückgabewert
16.03.2020 10:38:46
Patrick
Hallo Zusammen,
ich bin neu hier im Forum und auch in der Excel VBA Programmierung. In Access habe ich allerdings schon viel in VBA gemacht.
Hier meine Frage.
Ich habe eine Funktion geschrieben, die mir die Formatierung eines bestimmten Feldes ausgeben _ soll:

Function FormatAuslesen(strRange As String, strAusgabe As String)
Dim strColInt, strBolt As Boolean, strColText, strRahmen
If strAusgabe = "ColInt" Then
FormatAuslesen = Range(strRange).Interior.ColorIndex
Exit Function
End If
If strAusgabe = "Bolt" Then
FormatAuslesen = Range(strRange).Font.Bold
Exit Function
End If
If strAusgabe = "ColText" Then
FormatAuslesen = Range(strRange).Font.ColorIndex
Exit Function
End If
If strAusgabe = "Rahmen" Then
FormatAuslesen = Range(strRange).BorderAround
Exit Function
End If
FormatAuslesen = Null
End Function

Diese Funktion möchte ich nun aus einem _Sub_ heraus ansprechen um mir das jeweilig gewünschte Ergebnis zu holen. Hierzu habe ich in einem Tabellenblatt das Zielfeld benannt ("Form_Gewerk"). Alternativ lautet die Adresse des Feldes Steuerung!B26
Innerhalb meines Subs möchte ich mir nun aus der Funktion wie folgt den Wert für den ColorIndex der Zellfüllung abholen:
strRange = "Form_Gewerk"
strWert = FormatAuslesen(strRange, "ColInt")
Dabei bekomme ich aber den Laufzeitfehler 1004. Kann mir Da jemand helfen? Was mache ich falsch?
Vielen Dank und viele Grüße
Patrick

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Funktion aufrufen mit Rückgabewert
16.03.2020 11:11:16
Sigi
Hallo Patrick,
wenn "Form_Gewerk" ein Name für eine Zelle (Range) darstellt, dann musst du aus diesem String (denn es ist ein String!) erst noch einen Range erzeugen mit: Set XXXXX = Range(strRange)
Probier mal dies:
strRange = "Form_Gewerk"
Set Bereich = Range(strRange)
strWert = FormatAuslesen(strRange, "ColInt")
MsgBox strWert
Set Bereich = Nothing
Gruß
Sigi
AW: Funktion aufrufen mit Rückgabewert
16.03.2020 12:33:23
Patrick
Hallo Sigi,
danke für Deine Antwort, leider klappt das noch nicht ganz.
Muss ich "Bereich" nicht erst deklarieren? Ich habe SET Bereich as Range probiert. Klappt aber auch nicht.
Sollte ich im Formelaufruf dann nicht auch "Bereich" statt "strRange" verwenden? Sonst wäre das ganze vorher ja unnötig gewesen, oder? Hab ich alles versucht, gibt aber weiter Fehlermeldungen.
Und welche Form sollte den der Input in meine Funktion haben? Ist
Function FormatAuslesen(strRange As String, strAusgabe As String)
richtig?
Oder müsste ich strRange hier auch eher "as Range" definieren?
Anzeige
AW: Funktion aufrufen mit Rückgabewert
16.03.2020 14:19:21
Sigi
Hallo Patrick,
die Frage ist, was ist "strRange"? Wenn das ein String ist kann es nicht gehen. Deine Funktion erwartet einen Range!
Bsp.:
Sub ErmittleFormat()
Dim strRange As String
Dim strWert As Variant
Dim Zelle As Range
strRange = "B5"
Set Zelle = Range(strRange)
strWert = FormatAuslesen(strRange, "ColInt")
MsgBox "ColInt" & vbTab & strWert
strWert = FormatAuslesen(strRange, "Bolt")
MsgBox "Bolt" & vbTab & strWert
strWert = FormatAuslesen(strRange, "ColText")
MsgBox "ColText" & vbTab & strWert
Set Zelle = Nothing
End Sub
Sigi
Anzeige
AW: Funktion aufrufen mit Rückgabewert
16.03.2020 15:41:49
Patrick
Vielen Dank ich habe es jetzt wie folgt gelöst:
Function FormatAuslesen(rngRange As Range, strAusgabe As String) As Variant
Select Case strAusgabe
Case "ColInt"
FormatAuslesen = rngRange.Interior.ColorIndex
Case "Bold"
FormatAuslesen = rngRange.Font.Bold
Case "ColText"
FormatAuslesen = rngRange.Font.ColorIndex
Case "Rahmen"
FormatAuslesen = rngRange.BorderAround
Case Else
FormatAuslesen = ""
End Select
End Function

Aufruf:
Dim vRet As Variant
vRet = FormatAuslesen(rngRange:=ThisWorkbook.Names("Form_Gewerk").RefersToRange, strAusgabe:="ColInt")
MsgBox vRet
Anzeige

134 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige