Bestimmte VBA Funktion in ein Makro umwandeln?

Moderator: ModerationP

Bestimmte VBA Funktion in ein Makro umwandeln?

Beitragvon Peter92an » 27. Aug 2014, 16:47

Hallo,

ich habe diese Funktion als VBA:
Code: Alles auswählen
Option Explicit



Public Function Email_Filter(strB As String) As String
Dim varTmp() As Variant
Dim Regex As Object
Dim M
Dim Treffer
Dim lngIndex As Long
Set Regex = CreateObject("Vbscript.regexp")
With Regex
    .Pattern = "\b(\w[-.\w]*@\w[-.\w]*\.[a-zA-Z]{2,6})\b"
    .IgnoreCase = True
    .Global = True
    Set Treffer = .Execute(strB)
    If .test(strB) Then
        ReDim varTmp(Treffer.Count - 1)
        For Each M In Treffer
            varTmp(lngIndex) = M.Value
            lngIndex = lngIndex + 1
        Next
    End If
End With
Email_Filter = Join(varTmp, vbCrLf)
End Function


Nun wollte ich wissen, ob es möglich ist, diesen VBA-Code nicht als Funktion sondern als Makro abzuspeichern, sodass ich ihn per "Click" öffnen kann?
Zb. stehen die E-Mail Adressen in Spalte A, und ich möchte, dass dieser VBA-Code die E-Mails in Spalte B auswirft.

Weiß jemand weiter?

Oder ist so etwas überhaupt generell möglich? Gibt es da ein Schema-F, womit man Funktionen in Makros ändern kann?

Danke und Gruß!
Peter
Peter92an
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 15
Registriert: 27. Aug 2014, 16:17

Re: Bestimmte VBA Funktion in ein Makro umwandeln?

Beitragvon slowboarder » 27. Aug 2014, 16:55

Hi
am einfachsten ist ein weiteres Makro, welches diese Funktion als Formel in die Spalte B schreibt und dann bei Bedarf die Formel durch die Werte ersetzt.

Code: Alles auswählen
With Range("A2:A" & Cells(Rows.Count, 1).end(xlup).Row)
    .FormulaR1C1 = "=Email_Filter(RC1)"
    .Formula = .Value
End With



du kannstn natürlich auch die Funktion aus einem normalen Makro heraus aufrufen:

Code: Alles auswählen
Dim Zelle as Range
For Each Zelle in Columns(2).SpecialCells(xlcelltypeconstants, 2)
    Zelle.Offset(0, 1).Value = Email_Filter(Zelle.Value)
Next


Gruß Daniel
slowboarder
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 27243
Registriert: 18. Apr 2009, 13:33

Re: Bestimmte VBA Funktion in ein Makro umwandeln?

Beitragvon Peter92an » 28. Aug 2014, 15:07

Hallo Daniel,

Danke für deine Antwort!

Leider funktioniert das noch nicht so wie ich will, oder ich mache etwas falsch...
kannst du bitte etwas genauer erläutern, wie ich diese Codes nun einbetten muss? bzw. Was ich machen muss, damit das so funktioniert, wie ich mir das gedacht hatte?
Peter92an
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 15
Registriert: 27. Aug 2014, 16:17

Re: Bestimmte VBA Funktion in ein Makro umwandeln?

Beitragvon slowboarder » 28. Aug 2014, 15:32

Hi
genau dort, wo du die andrere Formel auch hingeschrieben hast, ins selbe Modul:

Code: Alles auswählen
Sub Makro1()
Dim Zelle as Range
For Each Zelle in Columns(2).SpecialCells(xlcelltypeconstants, 2)
    Zelle.Offset(0, 1).Value = Email_Filter(Zelle.Value)
Next
End Sub

Public Function Email_Filter(strB As String) As String
Dim varTmp() As Variant
Dim Regex As Object
Dim M
Dim Treffer
Dim lngIndex As Long
Set Regex = CreateObject("Vbscript.regexp")
With Regex
    .Pattern = "\b(\w[-.\w]*@\w[-.\w]*\.[a-zA-Z]{2,6})\b"
    .IgnoreCase = True
    .Global = True
    Set Treffer = .Execute(strB)
    If .test(strB) Then
        ReDim varTmp(Treffer.Count - 1)
        For Each M In Treffer
            varTmp(lngIndex) = M.Value
            lngIndex = lngIndex + 1
        Next
    End If
End With
Email_Filter = Join(varTmp, vbCrLf)
End Function


Aufrufen kannst du dann das Makro1

Gruß Daniel

btw. warum eigentlich parallel die Anfrage im anderen Forum?
sowas wirkt unhöflich, vorallem wenn du das machst, nachdem ich dir hier geantwortet habe.
slowboarder
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 27243
Registriert: 18. Apr 2009, 13:33

Re: Bestimmte VBA Funktion in ein Makro umwandeln?

Beitragvon Peter92an » 28. Aug 2014, 16:25

Hi Daniel,

danke für die Antwort!

Leider kommt nun ein Fehler, wenn ich das neue Makro1 starten möchte:
"Keine Zellen gefunden."

Obwohl Zellen in A1 da sind mit e-mail adressen....?

btw: Um mehr und schneller antworten auch von anderen mitgliedern zu bekommen, nichts für ungut ;)
Peter92an
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 15
Registriert: 27. Aug 2014, 16:17

Re: Bestimmte VBA Funktion in ein Makro umwandeln?

Beitragvon slowboarder » 28. Aug 2014, 16:36

du hast nicht mal 10 min auf meine Antwort warten müssen!
sorry, jetzt bin ich ein bisschen beleidigt.
Gruß Daniel
slowboarder
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 27243
Registriert: 18. Apr 2009, 13:33

Re: Bestimmte VBA Funktion in ein Makro umwandeln?

Beitragvon Peter92an » 29. Aug 2014, 12:54

Hallo,

erst einmal vielen Dank für alle Antworten und Infos etc!!

Nun möchte ich mich bei allen Teilnehmern öffentlich entschuldigen, dass ich sogenanntes "Cross-Posting" betrieben habe.

Ich habe mir ehrlich gesagt, nicht sehr viel dabei gedacht, und wusste nicht, dass es dermaßen unangemessen ist.

In der Foren-Welt bin ich noch recht neu und deshalb möchte ich mich entschuldigen, und verspreche, dass ich Themen nur auf anderen Foren poste, wenn es in diesem nicht / spät beantwortet wird.

Ich hoffe, dass ihr mir meinen Fehler verzeiht!

Liebe Grüße
Peter
Peter92an
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 15
Registriert: 27. Aug 2014, 16:17


Zurück zu Excel Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: CaBe, Kuwe und 6 Gäste