Der Code 2363 nach Anleitung runterkopiert, … läuft leider nicht. Problem:
Beim Kopieren einer Tabelle von w-w-w auf meinen Rechner bleibt das Makro hängen:
Call BedingteFormatierungEinlesen blau hinterlegt und Fehlermeldung: Sub oder function nicht definiert. Habe selbst auch im Code keinen Hinweis auf diese funktion gefunden.
Eine vorhergehende Fehlermeldung konnte ich durch Änderung der Verweise (Microsoft Forms 2.0 Object Library aktivieren) ich schon lösen.
Kann mir jemand helfen???
Gruß Backy
Hallo Jörg,
Call BedingteFormatierungEinlesen blau hinterlegt und
Fehlermeldung: Sub oder function nicht definiert. Habe selbst
auch im Code keinen Hinweis auf diese funktion gefunden.
ja, die Sub u.a. fehlt. Lösch die Zeile und die zwei Codeteilen danach
Eine vorhergehende Fehlermeldung konnte ich durch Änderung
der Verweise (Microsoft Forms 2.0 Object Library aktivieren)
ich schon lösen.
Nachstehend eine neue Version, diesmal braucht man den Verweis nicht. Nimm den Code.
Gruß
Reinhard
Option Explicit
#If VBA6 = 0 Then
Const FM20\_GUID = "{C43ABEE0-5C8F-4D95-B2C1-05B898491C64}" 'XL97
#Else
Const FM20\_GUID = "{0D452EE1-E08F-101A-852E-02608C4D0BB4}" 'XL2000
#End If
Public intAnzS As Integer, lngAnzZ As Long, bytFehl As Byte, varNameZ, varNameS
Public varFormat, varBereich, varZeile, strLinie As String, varBreite, strLinieU As String
Public strSatz As String, strNamen As String, strFormeln As String, strMatrixformeln As String
Public strZF As String, varZahlenformat, wksAltesBlatt As Worksheet
'
Sub Excel2W\_W\_W()
' Programm zum formatierten Darstellen von Tabellenblattbereichen bei wer-weiss-was.
' Getestet auf XL97, entwickelt Nov. 2006, geändert Feb.2008 by Reinhard
' Wie man Vba-Code einfügt und ausführt siehe FAQ:4712[FAQ-Eintrag nicht gefunden]
' Benutzung: gewünschten Tabellenblattbereich per Maus oder Tastatur markieren und Makro
' ausführen lassen. Im Eingabefeld von w-w-w dann Strg+V drücken.
' Versionen höher als XL8.0 (=XL97) benötigen den Verweis auf "Microsoft Forms 2.0 Object Library"
' Der Verweis wird benötigt für "DataObject"
' Mit folgendem Code wird das Makro dem Tastenkürzel "Strg+w" zugewiesen, es empfiehlt sich
' den Code ins Modul "DiesArbeitsmappe" der Personl.xls zu kopieren, dann steht das Tastenkürzel
' in allen Dateien zur Verfügung
'
' Private Sub Workbook\_Open()
' Call VerweisSetzen
' Application.OnKey "^t", "w\_w\_w2Excel"
' Application.OnKey "^w", "Excel2W\_W\_W"
' End Sub
'
Dim N 'objkurz As New DataObject
Set wksAltesBlatt = ActiveSheet
Call BereichEinlesen
If bytFehl = 255 Then Exit Sub
Call ZeilenErzeugen
Call TabelleinSatzEinfügen
'objkurz.SetText strSatz
'objkurz.PutInClipboard
'Set objkurz = Nothing
Call schreiben(strSatz)
'
' ab hier kann der nachfolgende Code (bis auf End Sub!) dieser Prozedur gelöscht werden,
' wenn man keine Kontrollausgabe in einem Hilfsblatt oder/und Notepad haben möchte
'
'\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* Ausgabe in Hilfsblatt \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
'On Error Resume Next
'Application.DisplayAlerts = False
'ActiveWorkbook.Worksheets("Testxyz").Delete
'Application.DisplayAlerts = True
'Worksheets.Add after:=Worksheets(Worksheets.Count)
'ActiveSheet.Name = "Testxyz"
'With Columns(1).Font
' .Name = "Courier New"
' .Size = 10
'End With
'Range("A1").Select
'ActiveSheet.Paste
'ActiveSheet.Buttons.Add(244.5, 123.75, 111.75, 42.75).Select
'With Selection
' .OnAction = "PERSONL.XLS!BlattLoeschen"
' .Characters.Text = "Dieses Blatt löschen"
'End With
'Range("A1").Select
''\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* Ausgabe in Notepad \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
'strSatz = Application.WorksheetFunction.Substitute(strSatz, Chr(13), "")
'strSatz = Application.WorksheetFunction.Substitute(strSatz, Chr(10), Chr(13) & Chr(10))
'objkurz.SetText strSatz
'objkurz.PutInClipboard
'Application.SendKeys "^v"
'N = Shell(Environ("systemroot") & "\notepad.exe", vbMaximizedFocus)
End Sub
'
Sub BereichEinlesen()
'Die Zellen (und ihre Formate) der Selection werden eingelesen
Dim lngZ As Long, intS As Integer
On Error GoTo Fehler
bytFehl = 1
If TypeName(Selection) "Range" Then GoTo Fehler
intAnzS = Selection.Columns.Count
lngAnzZ = Selection.Rows.Count
ReDim varBereich(lngAnzZ, intAnzS)
ReDim varFormat(lngAnzZ, intAnzS)
ReDim varZahlenformat(lngAnzZ, intAnzS)
ReDim varBreite(intAnzS)
ReDim varNameZ(lngAnzZ)
ReDim varNameS(intAnzS)
Call NamenZellen(Selection.Cells(1, 1).Address)
For lngZ = 1 To lngAnzZ
For intS = 1 To intAnzS
varZahlenformat(lngAnzZ, intAnzS) = Selection.Cells(lngZ, intS).NumberFormatLocal
varBereich(lngZ, intS) = Selection.Cells(lngZ, intS).Text
If Len(varBereich(lngZ, intS)) \> varBreite(intS) \_
Then varBreite(intS) = Len(varBereich(lngZ, intS))
varFormat(lngZ, intS) = XFormat(Selection.Cells(lngZ, intS))
Next intS
Next lngZ
For intS = 1 To intAnzS
If Len(varNameS(intS)) \> varBreite(intS) Then varBreite(intS) = Len(varNameS(intS))
Next intS
For lngZ = 1 To lngAnzZ
For intS = 1 To intAnzS
Select Case varFormat(lngZ, intS)
Case -4131
varBereich(lngZ, intS) = Left(varBereich(lngZ, intS) \_
& String(varBreite(intS), " "), varBreite(intS))
Case -4108
varBereich(lngZ, intS) = Left(String(Int((varBreite(intS) \_
- Len(varBereich(lngZ, intS))) / 2), " ") & varBereich(lngZ, intS) \_
& String(Int((varBreite(intS) - Len(varBereich(lngZ, intS))) / 2) \_
+ 1, " "), varBreite(intS))
Case -4152
varBereich(lngZ, intS) = Right(String(varBreite(intS), " ") \_
& varBereich(lngZ, intS), varBreite(intS))
Case Else
bytFehl = 2
GoTo Fehler
End Select
varBereich(lngZ, intS) = " " & varBereich(lngZ, intS) & " "
Next intS
Next lngZ
Exit Sub
Fehler:
Call Fehler(bytFehl)
End Sub
'
Public Sub schreiben(derText As String)
Dim IE As Object
Set IE = CreateObject("HTMLfile")
IE.ParentWindow.ClipboardData.SetData "text", derText & vbNullString
Set IE = Nothing
End Sub
Public Function lesen()
Dim IE As Object
On Error Resume Next
Set IE = CreateObject("HTMLfile")
lesen = IE.ParentWindow.ClipboardData.GetData("text")
Set IE = Nothing
End Function
Sub tt()
Err.Raise vbObjectError + 100, , "Fehler mit der Selection"
End Sub
'
Sub Fehler(ByVal Nummer As Integer)
'Es wurden Fehler erkannt
Dim strMldg As String
Select Case Nummer
Case 1
strMldg = "Es wurde kein gültiger Zellenbereich selektiert"
Case 2
strMldg = "Problem mit Formatierung"
Case Else
strMldg = "Unbekannter Fehler"
End Select
MsgBox strMldg & Chr(13) & Chr(13) & "Makro wird beendet"
bytFehl = 255
End Sub
'
Sub NamenZellen(OberelinkeZelle As String)
'Ermittlung der Zeilen- und Spaltenbezeichnungen ausgehend von der oberen
'linken Zelle der Selektion.
'NamenZellen() wird von BereichEinlesen() aufgerufen
Dim lngZ As Long, intS As Integer, strAdr As String
For lngZ = 1 To lngAnzZ
varNameZ(lngZ) = Range(OberelinkeZelle).Offset(lngZ - 1, 0).Row
Next lngZ
For intS = 1 To intAnzS
strAdr = Range(OberelinkeZelle).Offset(0, intS - 1).Address
varNameS(intS) = Left(Mid(strAdr, 2), InStr(2, strAdr, "$") - 2)
Next intS
End Sub
'
Function XFormat(Zelle As Range)
'Ermittlung ob Zelleninhalt linksbündig, rechtsbündig oder zentriert ist.
'XFormat() wird von BereichEinlesen() aufgerufen
Select Case Zelle.HorizontalAlignment
Case -4131, -4108, -4152
XFormat = Zelle.HorizontalAlignment
Case Else
XFormat = 1
End Select
If XFormat = 1 Then
If IsDate(Zelle.Value) Or IsNumeric(Zelle.Value) Then XFormat = -4152
If IsError(Zelle.Value) Then XFormat = -4108
End If
If XFormat = 1 Then XFormat = -4131
End Function
'
Sub TabelleinSatzEinfügen()
'strSatz ist der Gesamtstring, der nachher in die Zwischenablage kopiert wird.
'in diesem Projekt wird er zusammengesetzt.
'strSatz besteht aus pre-Tag, Blattname, Tabelle, ggfs. Formeln, ggfs. Matrixformeln,
'ggfs. Namen, Zahlenformate, ggfs. Bed. Formatierungen, ggfs. erster Zirkelbezug
'/pre-Tag, Schlußfloskel
Dim lngZ As Long, intS As Integer
strSatz = Chr(60) & "pre" & Chr(62) & "Tabellenblatt: "
If ActiveWorkbook.Path "" Then strSatz = strSatz & ActiveWorkbook.Path & "\"
strSatz = strSatz & "[" & ActiveWorkbook.Name & "]!" & ActiveSheet.Name & vbLf
strSatz = strSatz & varZeile(0) & vbLf
For lngZ = 1 To lngAnzZ
strSatz = strSatz & strLinie & vbLf
strSatz = strSatz & varZeile(lngZ) & vbLf
Next lngZ
strSatz = strSatz & strLinieU
Call FormelMatrixNamenEinlesen
If strFormeln vbLf Then strSatz = strSatz & vbLf & "Benutzte Formeln:" & strFormeln
If strMatrixformeln vbLf Then
strSatz = strSatz & vbLf & "Benutzte Matrixformeln:" & strMatrixformeln
strSatz = strSatz & "(Matrixformeln nicht mit " & Chr(34) & "Enter" & Chr(34) \_
& " sondern mit " & Chr(34) & "Strg+Shift+Enter" & Chr(34) & " eingeben." & vbLf
strSatz = strSatz & "Die Spezialklammern nicht manuell eingeben, sie werden von Excel erzeugt.)"
End If
If strNamen vbLf Then strSatz = strSatz & vbLf & vbLf & "Festgelegte Namen:" & strNamen
Call ZahlenFormate
strSatz = strSatz & vbLf & strZF
'Call BedingteFormatierungEinlesen
'If strBF "Bedingte Formatierung(en):" & vbLf Then strSatz = strSatz & vbLf & strBF
'If Not ActiveSheet.CircularReference Is Nothing Then strSatz = strSatz & vbLf & vbLf \_
& "Zirkelbezug in Zelle: " & ActiveSheet.CircularReference.Address(0, 0) & vbLf
strSatz = strSatz & vbLf & Chr(60) & "/pre" & Chr(62) & \_
vbLf & "Tabellendarstellung erreicht mit dem Code in [FAQ:2363](/t/faq/9292363)" & vbLf
'strSatz = strSatz & "Dargestellte Tabelle kann man mit Code aus der gleichen FAQ in \_
' ein Tabellenblatt einfügen." & vbLf
strSatz = strSatz & "Gruß" & vbLf & "Reinhard" & vbLf 'Environ("Username")
End Sub
'
Sub ZeilenErzeugen()
'Die Zeilen der späteren Tabelle werden erstellt
Dim lngZ As Long, intS As Integer, Tr
Tr = Array(ChrW(9474), ChrW(9472), ChrW(9532), ChrW(9508), ChrW(9524), ChrW(9496))
ReDim varZeile(lngAnzZ)
varZeile(0) = String(Len(varNameZ(lngAnzZ)) + 1, " ") & Tr(0)
For lngZ = 1 To lngAnzZ
varZeile(lngZ) = Right(" " & varNameZ(lngZ), Len(varNameZ(lngAnzZ))) & " " & Tr(0)
For intS = 1 To intAnzS
varZeile(lngZ) = varZeile(lngZ) & varBereich(lngZ, intS) & Tr(0)
Next intS
Next lngZ
strLinie = String(Len(varNameZ(lngAnzZ)), Tr(1)) & Tr(1) & Tr(2)
strLinieU = String(Len(varNameZ(lngAnzZ)), Tr(1)) & Tr(1) & Tr(4)
For intS = 1 To intAnzS
strLinie = strLinie & String(varBreite(intS) + 2, Tr(1)) & Tr(2)
strLinieU = strLinieU & String(varBreite(intS) + 2, Tr(1)) & Tr(4)
varZeile(0) = varZeile(0) & Left(String(Int((varBreite(intS) + 2) / 2), " ") \_
& varNameS(intS) & String(varBreite(intS), " "), varBreite(intS) + 2) & Tr(0)
Next intS
strLinie = Left(strLinie, Len(strLinie) - 1) & Tr(3)
strLinieU = Left(strLinieU, Len(strLinieU) - 1) & Tr(5)
End Sub
'
Sub FormelMatrixNamenEinlesen()
'Formeln, Matrixformeln,Namen werdn eingelesen.
'Namen die sich auf einen relativen Zellbezug beziehen sind schlecht darzustellen
'denn jenachdem welche Zelle gerade aktiv ist ändert sich der Inhalt von ReferesTo
'Namen die sich auf einen relativen Zellbezug beziehen, werden, soweit vom Code erkannt,
'diesbezügluch in der Anzeige kommentiert.
Dim intS As Integer, lngZ As Long, intAnzN As Integer, LängeN As Integer, N As Integer
Dim Merker As Range, Ref1 As String, Ref2 As String, Ze As Range
Dim Merk As String, Vorh As Boolean
strFormeln = vbLf
strMatrixformeln = vbLf
strNamen = vbLf
Set Merker = Selection
With Selection
For intS = 1 To intAnzS
For lngZ = 1 To lngAnzZ
If .Cells(lngZ, intS).HasFormula And Not .Cells(lngZ, intS).HasArray Then \_
strFormeln = strFormeln & Left(.Cells(lngZ, intS).Address(0, 0) \_
& " ", Len(.Cells(lngAnzZ, intAnzS).Address(0, 0))) & ": " \_
& .Cells(lngZ, intS).FormulaLocal & vbLf
If .Cells(lngZ, intS).HasArray Then strMatrixformeln = strMatrixformeln \_
& Left(.Cells(lngZ, intS).Address(0, 0) & " ", \_
Len(.Cells(lngAnzZ, intAnzS).Address(0, 0))) & ": " & "{" & \_
.Cells(lngZ, intS).FormulaLocal & "}" & vbLf
Next lngZ
Next intS
intAnzN = ActiveWorkbook.Names.Count 'Anzahl der im Workbook benutzten Namen ermitteln
If intAnzN \>= 1 Then 'Wenn es Namen gibt
LängeN = Len(ActiveWorkbook.Names.Item(1).Name)
For N = 2 To intAnzN ' größte Namenslänge ermitteln
If LängeN Ref2 Then 'Relativer Name!
strNamen = strNamen & ActiveWorkbook.Names.Item(N).RefersToLocal & " \*rel. Name"
On Error Resume Next 'wg specialcells
If Not Intersect(Merker, ActiveSheet.UsedRange.SpecialCells(xlCellTypeFormulas)) \_
Is Nothing Then
For Each Ze In Intersect(Merker, ActiveSheet.UsedRange.SpecialCells(xlCellTypeFormulas))
If InStr(Ze.FormulaLocal, ActiveWorkbook.Names.Item(N).Name) \> 0 Then
Merk = Application.WorksheetFunction.Substitute(Ze.FormulaLocal, \_
ActiveWorkbook.Names.Item(N).Name, "")
If IsError(Evaluate(Merk)) = True Then
Ze.Select
strNamen = strNamen & ", so gültig in " & Ze.Address(0, 0)
Exit For
End If
End If
Next Ze
End If
Else
strNamen = strNamen & ActiveWorkbook.Names.Item(N).RefersToLocal
End If
If ActiveWorkbook.Names.Item(N).Visible = False Then strNamen = strNamen \_
& ", \*versteckter Name"
Vorh = False
On Error Resume Next
If Not Intersect(Merker, ActiveSheet.UsedRange.SpecialCells(xlCellTypeFormulas)) Is Nothing Then
For Each Ze In Intersect(Merker, ActiveSheet.UsedRange.SpecialCells(xlCellTypeFormulas))
If InStr(Ze.FormulaLocal, ActiveWorkbook.Names.Item(N).Name) \> 0 Then
Merk = Application.WorksheetFunction.Substitute(Ze.FormulaLocal, ActiveWorkbook.Names.Item(N).Name, "")
If IsError(Evaluate(Merk)) = True Then
Vorh = True
Exit For
End If
End If
Next Ze
End If
On Error GoTo 0
If Vorh = False Then strNamen = strNamen & ", unbenutzt in Selektion."
strNamen = strNamen & vbLf
Next N
End If
End With
Merker.Select
End Sub
'
Sub ZahlenFormate()
'Wenn in der Selection verschiedene Zahlenformate vorkommen werden diese in "Col"
'gespeichert. "Col" wird in einer Schleife abgearbeitet und in einer Unterschleife
'wird ermittelt welche zellen das jeweilige zahlenformat in "Col" haben.
Dim col As New Collection, C As Long, lngZ As Long, intS As Integer
Dim strZFkurz As String, strMldg As String, intPos As Integer
strZF = "Zahlenformate der Zellen im gewählten Bereich:" & vbLf
If Not Selection.NumberFormatLocal = Empty Then
strZF = Selection.Address(0, 0) & vbLf & IIf(Selection.Cells.Count 1, "haben", "hat")
strZF = strZF & " das Zahlenformat: "
strZF = strZF & IIf(Selection.NumberFormatLocal = "@", "Text", Selection.NumberFormatLocal) & vbLf
Else
On Error Resume Next 'wg. Col
For intS = 1 To Selection.Columns.Count
With Selection.Columns(intS)
If Not .NumberFormatLocal = Empty Then
col.Add Item:=.NumberFormatLocal, key:=.NumberFormatLocal
varZahlenformat(0, intS) = .NumberFormatLocal
C = C + 1
End If
End With
Next intS
If C intAnzS Then
For intS = 1 To intAnzS
If varZahlenformat(0, intS) = "" Then
For lngZ = 1 To lngAnzZ
col.Add Item:=Selection.Cells(lngZ, intS).NumberFormatLocal, key:=Selection.Cells(lngZ, intS).NumberFormatLocal
varZahlenformat(lngZ, intS) = Selection.Cells(lngZ, intS).NumberFormatLocal
Next lngZ
End If
Next intS
End If
On Error GoTo 0
For C = 1 To col.Count
For intS = 1 To intAnzS
If varZahlenformat(0, intS) "" Then
If col.Item(C) = varZahlenformat(0, intS) Then
strZF = strZF & Selection.Columns(intS).Address(0, 0) & ","
End If
Else
strZFkurz = ""
For lngZ = 1 To lngAnzZ
If col.Item(C) = varZahlenformat(lngZ, intS) Then
strZFkurz = strZFkurz & Selection.Cells(lngZ, intS).Address(0, 0) & ","
End If
Next lngZ
strZF = strZF & BereicheZ(strZFkurz)
End If
Next intS
strMldg = IIf(InStr(strZF, ",") = Len(strZF) And InStr(strZF, ":") = 0, "hat", "haben")
strZF = Left(strZF, Len(strZF) - 1) & vbLf & strMldg & " das Zahlenformat: " & IIf(col.Item(C) = "@", "Text", col.Item(C)) & vbLf
Next C
strZF = BereicheS(strZF)
End If
End Sub
'
Function BereicheZ(ByVal F As String) As String
'Zusammengehörende Zellen einer Spalte werden zusammengefasst zu einem Bereich
'um die Anzeigenbreite bei Zahlenformaten zu verkleinern
'Bereiche() wird von Zahlenformate() aufgerufen wenn in einer Spalte verschiedene
'Zahlenformate vorhanden sind.
Dim M As Long, N As Long, lngPos As Long, g() As Variant, Anz As Long
Dim lngOff As Long
While InStr(lngPos + 1, F, ",") \> 0
Anz = Anz + 1
ReDim Preserve g(Anz)
g(Anz) = Mid(F, lngPos + 1, InStr(lngPos + 1, F, ",") - lngPos - 1)
lngPos = InStr(lngPos + 1, F, ",")
Wend
If Anz = 1 Then
BereicheZ = g(1) & ","
Exit Function
End If
Anz = Anz + 1
ReDim Preserve g(Anz)
g(Anz) = g(1) 'Dummmy
For N = 1 To UBound(g) - 1
lngOff = 1
While Range(g(N)).Offset(lngOff, 0).Address(0, 0) = Range(g(N + lngOff)).Address(0, 0)
lngOff = lngOff + 1
Wend
BereicheZ = BereicheZ & g(N)
If lngOff \> 1 Then BereicheZ = BereicheZ & ":" & Range(g(N)).Offset(lngOff - 1, 0).Address(0, 0)
BereicheZ = BereicheZ & ","
N = N + lngOff - 1
Next N
End Function
'
Function BereicheS(ByVal F As String) As String
'Zellen in Spalten zusammenfassen wenn zusammengehörig,
Dim Anz, Pos, Zellen, PosZ, g() As Variant, AnzZ, N, lngOff, PosK
While InStr(Pos + 1, F, vbLf) \> 0
Zellen = Mid(F, Pos + 1, InStr(Pos + 1, F, vbLf) - Pos)
If InStr(Zellen, "Zahlen") \> 0 Then
BereicheS = BereicheS & Zellen
Else
PosZ = 0
Zellen = Zellen & ",IU65530," 'Dummy anfügen
AnzZ = 0
While InStr(PosZ + 1, Zellen, ",") \> 0
AnzZ = AnzZ + 1
ReDim Preserve g(AnzZ)
g(AnzZ) = Mid(Zellen, PosZ + 1, InStr(PosZ + 1, Zellen, ",") - PosZ - 1)
PosZ = InStr(PosZ + 1, Zellen, ",")
Wend
For N = 1 To UBound(g) - 1
g(N) = Application.WorksheetFunction.Substitute(g(N), vbLf, "")
'MsgBox InStr(g(N), vbLf)
If InStr(g(N), ":") = 0 Then
lngOff = 1
While Range(g(N)).Offset(0, lngOff).Address(0, 0) = Range(g(N + lngOff)).Address(0, 0)
lngOff = lngOff + 1
Wend
BereicheS = BereicheS & g(N)
If lngOff \> 1 Then BereicheS = BereicheS & ":" & Range(g(N)).Offset(0, lngOff - 1).Address(0, 0)
BereicheS = BereicheS & ","
N = N + lngOff - 1
Else
BereicheS = BereicheS & Application.WorksheetFunction.Substitute(g(N), vbLf, "") & ","
End If
Next N
If Right(BereicheS, 1) = "," Then BereicheS = Left(BereicheS, Len(BereicheS) - 1)
BereicheS = BereicheS & vbLf
End If
Pos = InStr(Pos + 1, F, vbLf)
Anz = Anz + 1
Wend
Pos = 0
While InStr(Pos + 1, BereicheS, vbLf) \> 0
Zellen = Mid(BereicheS, Pos + 1, InStr(Pos + 1, BereicheS, vbLf) - Pos)
If InStr(Zellen, "Zahlen") = 0 Then
PosK = Pos
While Len(Zellen) \> 70
PosK = InStr(PosK + 70, BereicheS, ",")
Mid(BereicheS, PosK, 1) = vbLf
Zellen = Mid(Zellen, 70)
Wend
End If
Pos = InStr(Pos + 1, BereicheS, vbLf)
Wend
BereicheS = Left(BereicheS, Len(BereicheS) - 1)
End Function
Sub VerweisSetzen()
Dim VBEObj As Object, objV As Object, Gesetzt As Boolean
For Each objV In ActiveWorkbook.VBProject.References
If objV.GUID = FM20\_GUID Then
Gesetzt = True
Exit For
End If
Next objV
If Gesetzt = False Then
Set VBEObj = Application.VBE.ActiveVBProject.References.AddFromGuid(FM20\_GUID, 2, 0)
End If
Set VBEObj = Nothing
End Sub