Function SumZahlen(Zellen As Variant, IndexBlock As Integer) As String
Dim Zelle As Range
Dim Zeichen As Integer
Dim Schalter As Boolean
Dim ArrInd As Integer
ReDim ArrFeld(Len([Zellen])) As String
ArrInd = 1
Application.Volatile
If IndexBlock > Len([Zellen]) Then IndexBlock = Len([Zellen])
For Zeichen = 1 To Len([Zellen])
If Mid([Zellen], Zeichen, 1) Like "[0-9,.]" = True Then
ArrFeld(ArrInd) = ArrFeld(ArrInd) & Mid([Zellen], Zeichen, 1)
Schalter = True
End If
If Schalter = True And Mid([Zellen], Zeichen, 1) Like "[0-9,.]" = False Then
ArrInd = ArrInd + 1
Schalter = False
End If
Next Zeichen
SumZahlen = ArrFeld(IndexBlock)
End Function Rem StrBe() ist eine string verarbeitenden function die anhand der eingestellten parameter die angegebenen bereiche addiert wie auch zusammenfuegt
Rem einsatzgebiete zur zahlen und texttrennung und oder addierung wie auch trennung von steuerzeichen
Rem StrBe(Bereich, Parameter 1,Parameter 2, Parameter 3 bis flexibles ende)
Rem Bereich=zellenangabe oder bereich
Rem parameter 1
Rem 0 fuer diese erlaubten zeichen ("0-9"),ergaenzend dazu das alle zahlen addiert werden bei 0
Rem 1 fuer diese erlaubten zeichen ("A-Za-zßÄäÖöÜü")
Rem 2 fuer diese erlaubten zeichen ("0-9,.A-Za-zßÄäÖöÜü")
Rem parameter 2
Rem 0=links beginnend
Rem 1=rechts beginnend
Rem parameter 3
Rem positionen der zeichenbloecke,auch gemischt darstellbar
Rem z.b.
Rem =StrBe(A1:A3;0;0;1;3)
Rem Paraneter sind A1:A3;0;0;1;3
Rem A1:A3 =Bereich
Rem 0=erlaubte zeichen ("0-9")
Rem 0=links beginnend
Rem 1=erste Zahlenblock
Rem 3=dritte Zahlenblock
Rem das ParamArray gestattet eine flexible Anzahl von Zahlenblöcken Function StrBe(Zellen As Variant, ZahlText As Integer, LinksRechts As Boolean, ParamArray AnzBl() As Variant) As Variant
Application.Volatile
Dim schalter As Boolean
Dim ZeichenPos As Integer, ZeichenSammelnPos As Integer, ZeichenDurchlauf As Integer
Dim Modus As String
Dim Zelle As Range
If ZahlText = 0 Then Modus = "0-9"
If ZahlText = 1 Then Modus = "A-Za-zßÄäÖöÜü"
If ZahlText = 2 Then Modus = "0-9,.A-Za-zßÄäÖöÜü"
For Each bereich In Zellen
ReDim ZeichenSammeln(Len(Cells(bereich.Row, bereich.Column))) As String
For IndexArr = 0 To UBound(AnzBl())
ZeichenSammelnPos = 1
If AnzBl(IndexArr) > Len(Cells(bereich.Row, bereich.Column)) Then AnzBl(IndexArr) = Len(Cells(bereich.Row, bereich.Column))
If LinksRechts = False Then
For ZeichenPos = 1 To Len(Cells(bereich.Row, bereich.Column))
If Mid(Cells(bereich.Row, bereich.Column), ZeichenPos, 1) Like "[" & Modus & "]" = True Then
ZeichenSammeln(ZeichenSammelnPos) = ZeichenSammeln(ZeichenSammelnPos) & Mid(Cells(bereich.Row, bereich.Column), ZeichenPos, 1)
schalter = True
End If
If schalter = True And Mid(Cells(bereich.Row, bereich.Column), ZeichenPos, 1) Like "[" & Modus & "]" = False Then
ZeichenSammelnPos = ZeichenSammelnPos + 1
schalter = False
End If
Next ZeichenPos
Else
For ZeichenPos = Len(Cells(bereich.Row, bereich.Column)) To 1 Step -1
If Mid(Cells(bereich.Row, bereich.Column), ZeichenPos, 1) Like "[" & Modus & "]" = True Then
ZeichenSammeln(ZeichenSammelnPos) = Mid(Cells(bereich.Row, bereich.Column), ZeichenPos, 1) & ZeichenSammeln(ZeichenSammelnPos)
schalter = True
End If
If schalter = True And Mid(Cells(bereich.Row, bereich.Column), ZeichenPos, 1) Like "[" & Modus & "]" = False Then
ZeichenSammelnPos = ZeichenSammelnPos + 1
schalter = False
End If
Next ZeichenPos
End If
If ZahlText = 0 And AnzBl(0) = 0 Then
For ZeichenDurchlauf = 1 To UBound(ZeichenSammeln())
If ZeichenSammeln(ZeichenDurchlauf) = "" Then Exit For
StrBe = Val(StrBe) + Val(ZeichenSammeln(ZeichenDurchlauf))
Next ZeichenDurchlauf
Exit For
End If
If ZahlText = 0 And AnzBl(0) > 0 Then StrBe = Val(StrBe) + Val(ZeichenSammeln(AnzBl(IndexArr)))
If ZahlText = 1 And AnzBl(0) = 0 Or ZahlText = 2 And AnzBl(0) = 0 Then
For ZeichenDurchlauf = 1 To UBound(ZeichenSammeln())
If ZeichenSammeln(ZeichenDurchlauf) = "" Then Exit For
StrBe = StrBe + ZeichenSammeln(ZeichenDurchlauf)
Next ZeichenDurchlauf
Exit For
End If
If ZahlText = 1 And AnzBl(0) > 0 Or ZahlText = 2 And AnzBl(0) > 0 Then StrBe = StrBe + ZeichenSammeln(AnzBl(IndexArr))
For ZeichenDurchlauf = 1 To UBound(ZeichenSammeln())
ZeichenSammeln(ZeichenDurchlauf) = ""
Next ZeichenDurchlauf
schalter = False
ZeichenSammelnPos = 0
Next IndexArr
Next bereich
End Function
Inhalt von einer Zelle in andere Zelle schreiben
Melina 19.09.2009 - 342 Hits - 2 Antworten
vba: zelle oberhalb der aktiven zelle suchen
EKG 21.11.2009 - 218 Hits - 3 Antworten
vba: zelle oberhalb der aktiven zelle suchen
EKG 24.11.2009 - 229 Hits - 9 Antworten
einzelne Wörter herausfiltern - Excel
Suki 18.06.2010 - 303 Hits - 5 Antworten
von Zelle in Zelle kopieren, aber nur überschreiben,wenn Bedingung erfüllt
Hoax 05.10.2010 - 94 Hits - 4 Antworten