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

Function und deren Gebrauch

Function und deren Gebrauch
04.06.2020 14:58:04
Marc
Hi Communitiy
Über den Einsatz einer Function habe ich immer wieder mal was gelesen, die praktischen Beispiele beziehen sich aber immer auf eine Berechnung. Ich suche nach einer Möglichkeit, wie ich einen Standard-Ablauf in verschiedenen Prozeduren aufrufen kann, was - wie ich gelernt habe - mit einer GoTo Schleife nicht möglich ist.
Konkret will ich die Befehle unten in eine Function packen, welche ich dann in verschiedenen Prozeduren aufrufen werde. Das Sheet "Kalenderwoche" werde ich dann durch eine Variable ersetzen, je nachdem, woher die Function aufgerufen wird.
Hat da jemand eine Lösung?
Wie auch immer, auf jeden Fall wünsche ich euch allen einen schönen und erfolgreichen Tag.
Es grüsst euch Marc
Sheets("Kalenderwoche").Activate
ActiveSheet.Columns("A:E").Select
Selection.ClearContents
Worksheets("Blatt1").Columns(1).Copy Destination:=ActiveSheet.Columns(1)
Worksheets("Blatt1").Columns(4).Copy Destination:=ActiveSheet.Columns(2)
Worksheets("Blatt1").Columns(5).Copy Destination:=ActiveSheet.Columns(3)
Worksheets("Blatt1").Columns(8).Copy Destination:=ActiveSheet.Columns(4)
Worksheets("Blatt1").Columns(10).Copy Destination:=ActiveSheet.Columns(5)

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Function und deren Gebrauch
04.06.2020 15:04:33
Herbert
Hallo,
weißt du einfach nur nicht wie du das mit der Function machst oder habe ich den Kontext deiner Frage falsch verstanden?
LG Herbert!
AW: Siehe auch hier:
04.06.2020 15:50:59
Marc
Hallo Herbert
Ja, tatsächlich weiss ich nicht, wie die Function anwenden. Ich habe soeben Hansueli geantwortet, dort habe ich nochmals versucht, mein Problemchen zu erklären. Ich hoffe, es blieb nicht beim Versuch :)
Grüess
Marc
AW: Function und deren Gebrauch
04.06.2020 15:16:39
EtoPHG
Hallo Marc,
Dein Code deutet darauf hin, dass das nicht mit einer UDF (User Define Function) gelöst werden kann. Eine UDF kannst du dir vorstellen, wie eine XL-Formel, die auf ein oder mehrere Eingabeparameter genau ein Resultat in die aufrufende Zelle zurückliefert. Eine UDF darf aber keine anderen Zellinhalte als die der aufrufenden Zelle verändern. Dein Code müsste mit einer Prozedur (Sub) mit Eingabeparamtern gelöst werden.
Dazu ist aber deine Beschreibung "...durch eine Variable ersetzen, je nachdem, woher die Function aufgerufen wird." ist aber viel zu ungenau für die Realisierung. Wann/Wie und von wo aus soll der Code ausgelöst werden? Wie lautet die genau Regel für die Abhängikeit des Ausgabeorts (Destination) vom Eingabeort (.Copy from) ?
Gruess Hansueli
Anzeige
AW: Function und deren Gebrauch
04.06.2020 15:47:59
Marc
Hallo Hansueli
Danke für dein Feedback.
Mein Code würde etwa so aussehen, wenn ich dazu den GoTo Befehl einsetzen könnte:
Sub_Schaltfläche 1
art="Monat"
GoTo BlattAufbereiten
End Sub
---------------------
BlattAufbereiten:
Sheets("Kalenderwoche").Activate
ActiveSheet.Columns("A:E").Select
Selection.ClearContents
Worksheets("Blatt1").Columns(1).Copy Destination:=ActiveSheet.Columns(1)
Worksheets("Blatt1").Columns(4).Copy Destination:=ActiveSheet.Columns(2)
Worksheets("Blatt1").Columns(5).Copy Destination:=ActiveSheet.Columns(3)
Worksheets("Blatt1").Columns(8).Copy Destination:=ActiveSheet.Columns(4)
Worksheets("Blatt1").Columns(10).Copy Destination:=ActiveSheet.Columns(5)
Hier würde ich dann wieder in das vorige Makro zurückspringen
Wahrscheinlich stifte ich Verwirrung, weil ich keine Ahnung habe, wie man so etwas programmiert. Es müsste doch eine Lösung geben, wie ich eine Standardprozedur immer wieder aufrufen kann, ohne in jedem einzelen Makro dieselben Zeilen immer wieder brauchen zu müssen. Eigentlich wechselt nur der Name des Sheets. Da ich aber trotzdem eine Befehlsschaltfläche nutzen will, bleibt nur der Weg.
Grüess
Marc
Anzeige
AW: Function und deren Gebrauch
04.06.2020 16:10:31
EtoPHG
Hallo Marc,
1. Die Parameter (Variablen) Übergabe: Von irgendwo muss ja "Monat" kommen. Z.B. von einem Zellinhalt oder einer Benutzereingabe, denn neben "Monat" gibt es vielleicht "Woche", "Quartal" etc.
Also was können die Variablen für Werte annehmen? bzw. wie entstehen sie?
2. Wenn für jede Variable ein komplett anderer Code ausgeführt werden soll, erstellst du für jede eine Prozedur mit einem sprechenden Name und rufst diese bei Entsprechung auf, also z.B.
Select Case art
Case "Monat":Monats_Verarbeitung
Case "Woche":Wochen_verarbeitung
Case Else:Msgbox "Art ist nicht bekannt",vbExclamation
End Select

und dann für jede Einzelverarbeitung eine
Sub Monats_Verarbeitung()
Code der den Monat verarbeitet
End Sub
Sub Woche_Verarbeitung()
Code der die Woche verarbeitet
End Sub

3. Das mit dem Zurückspringen habe ich immer noch nicht verstanden. Natürlich kann nach dem Codeschnipsel von 2. noch Code folgen, der unabhängig von der Art immer ausgeführt werden soll.
4. Die Befehle .Select und .Activate sind in 99% aller Anwendungen überflüssig, wenn du die Referenzierung der Objekte, wie in deinem Code vollständig machst.
Die Beschreibungen was du erreichen willst, sind IMHO schon viel zu fixiert auf Codekonstrukt. Der umgekehrte Weg wäre besser, nämlich, dass du den genauen Ablauf aus der Sicht eines Benutzer beschreibst. Er macht das, dann soll das passieren, dann macht er ... und es geht weiter mit ... etc.
Gruess Hansueli
Anzeige
AW: Function und deren Gebrauch
04.06.2020 16:40:18
Marc
Hoi Hansueli
Vielen Dank, jeder Input ist wertvoll für jemanden mit Basis-Kenntnissen. Offensichtlich ist es im VBA nicht möglich, eine Standardprozedur aus irgendeinem Makro heraus abzufragen. Ich kopiere dieselben Befehlszeilen einfach in jedes Makro, soviel wie es gebraucht wird.
Mit besten Grüssen
Marc
Dafür brauchst du keine Function
04.06.2020 18:13:11
Martin
Hallo Marc,
du kannst Variablen auch an ganz normale Sub-Makros übergeben. Hier ein Beispiel:
Sub Aufruf()
Call CopyToSheet(Sheets("Kalenderwoche"))
End Sub
Sub CopyToSheet(shTarget As Worksheet)
With shTarget
'Inhalte löschen
.Columns("A:E").ClearContents
'Spalten 1,4,5,8 und 10 kopieren und einfügen
Worksheets("Blatt1").Range("A:A,D:D,E:E,H:H,J:J").Copy .Range("A1")
'Zieltabelle auswählen
.Activate
End With
End Sub
Viele Grüße
Martin
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige