ERLEDIGT
JA
JA
ANTWORTEN
13
13
ZUGRIFFE
22923
22923
EMPFEHLEN
-
Hallo
Wie kann ich eine Funktion in einem Sub aufrufen?
Hier könnt ihr den Code anschauen.
-
24.01.08 16:41 #2
Also, im allgemeinen wird eine Funktion mit
aufgerufen, dabei ist es egal, ob die Funktion Public oder Private ist. Schau dir zu dem Thema die VBA-Hilfe an, da werden die Funktionen gut erklärt.Code vb:1
Resultat = Funktion (Eingabewerte)
Der Doc!A: Hilfe, ich hab zwei Dateien hinzugefügt und nun sind die anderen weg
B: Die Scrollbar da rechts ist dir schon mal aufgefallen?
-
was ist der eingabewert?
also muss ich im Private Sub einfach
l.Resultat=Januar()
oder
Resualtat=Januar()
?
-
24.01.08 22:33 #4
Nehmen wir mal an, du hast eine kleine Funktion, um z.B. das Quadrat einer Zahl zu berechnen:
Der Aufruf erfolgt setzt in deiner Prozedur so:Code vb:1 2 3 4 5 6
Public Function Quadrat (ByVal sgZahl As Single) As Single 'In der Funktion steht der übergebene Wert nun in der Variable sZahl, die Variable ist hier vom Datentyp Single 'Jetzt kommt meine ganz einfache Berechnung: Quadrat = sgZahl * sgZahl 'wie du siehst, ist meine Ausgabevariable gleich dem Namen der Funktion End Function
Code vb:1 2 3 4 5 6 7 8 9 10
'Ich nehm hier das Click-Event eines CommandButtons Private Sub Command1_Click() Dim sgWert As Single, sgErgebnis As Single 'Ich leg hier einfach mal einen Wert fest, kannst du natürlich auch anders übergeben: sgWert = 12 'Jetzt rufe ich die Funktion auf: sgErgebnis = Quadrat(sgWert) 'und gebe das Ergebnis per MessageBox aus MsgBox "Das Quadrat von " & sgWert & " ist " & sgErgebnis End Sub
Hoffe, das das Erklärung genug ist, ansonsten solltest du mal mit einem VB-Grundkurs liebäugeln.
Der Doc!A: Hilfe, ich hab zwei Dateien hinzugefügt und nun sind die anderen weg
B: Die Scrollbar da rechts ist dir schon mal aufgefallen?
-
- Bitte erledigte Themen als erledigt Makieren
- Bei Hilfe bitte die Beiträge bewerten
Es gibt 10 Arten von Menschen - Jene die Binär verstehen und jene die es nicht tun...
-
@deen...
Hi... Mal ne Frage...
Das Teil was du da codest ist das für dich oder soll das dann auf einem anderen System laufen?
Die Frage ist berechtigt da du imense Probleme bekommst wenn du das Projekt auf einem anderen System startest...
Versuch den Code zum laden eines Monats Variabler zu gestalten...
Code nicht jedes Monat FIX sondern überleg die eine Routine die du dann immer mit Variablen startest.
Die Vorteile liegen auf der hand...
VBA wird dir dankbar sein da dein Code kleiner wird...
Du wirst dir selbst dankbar sein da du schneller und leichter das Projekt an andere Umgebungen und/oder Jahre anpassen kannst...
lg Tody- Bitte erledigte Themen als erledigt Makieren
- Bei Hilfe bitte die Beiträge bewerten
Es gibt 10 Arten von Menschen - Jene die Binär verstehen und jene die es nicht tun...
-
das ist eine aufgabe die mein ausbilder mir gegeben hat. ist nur eine übung damit ich meh ahnug für VBA bekomme
-
Hi...
Dann musst du dir überlegen ob es sich auszahlt die Funktionen umzustellen...
Ich denke mal ja...
Die übersichtlichkeit im Code würde auch noch verbessert werden...
Hat positive Auswirkung auf eine Note falls du eine bekommen solltest....
lg Tody- Bitte erledigte Themen als erledigt Makieren
- Bei Hilfe bitte die Beiträge bewerten
Es gibt 10 Arten von Menschen - Jene die Binär verstehen und jene die es nicht tun...
-
Also ich habs jetzt mit verschiedenen Subs gemacht für jeden Monat. Wenn ich sie aufrufe, das mach ich jetzt so:
Code :1
If monat=12 Then Call Dezember
Aber nachher macht er mir überhaupt nichts was in dem Sub steh. Die If-Anweisung hab ich dann auch weggenommen im Sub Dezember, aber dann macht er mir genau nur das erste und dann nicht mehr, dann zeigt er mir immer den Pfad falsch an der unteren. Aber der Pfad stemmt
-
Hi...
So wie du das schilderst hört es sich an alls ob du nichts geändert hast...
Dann versteh ich auch nicht warum es nicht mehr geht...
Sei mit deinen Angaben bitte etwas prezieser...
Erläuter was du geändert hast und stell mehr code als die eine Zeile ein...
Was ich gemeint habe war das du EINE Funktion/Sub machst und die aufrufst...
Da du ja in jedem Monat fast den gleichen Code hast (Pfade sind anders soweit ich das gesehen hab)
Also eine Funktion... zB...
Code vb:1 2 3 4 5 6 7 8
Function LoadFile(sJahr as String, sMonat as String) Dim sPath as String sPath = "C:\Auswertungen\" & sJahr & "\Daten_" & sJahr & "_" & sMonat & ".xls" 'Ergibt im Jahr 2008 und Monat 01 folgenden String - "C:\Auswertungen\2008\Daten_2008_01.xls" '... '... Weiterer Code der nun die Festgelegte Datei abarbeitet... '... End Function
Das Teil könntest du dann so aufrufen...
Code :1 2 3 4 5
ret = LoadFile("2008", "01") oder LoadFile "2008", "01"
Ich hoffe ich hab dir nun Verständlich gemacht was ich gemeint habe...
Lg TodyGeändert von Tody83 (28.01.08 um 20:25 Uhr) Grund: Tippfehler
- Bitte erledigte Themen als erledigt Makieren
- Bei Hilfe bitte die Beiträge bewerten
Es gibt 10 Arten von Menschen - Jene die Binär verstehen und jene die es nicht tun...
-
12.10.09 14:28 #11Alexander87 Tutorials.de Gastzugang
Hi,
nochmal eine Frage bezüglich einer Funktion.
Ich habe eine Funktion, der ich einen String übergebe und die mir einen Integerwert ausspuckt.
Code :1 2 3 4 5
Public Function pixel(ByVal text As String) As Integer Dim size As Integer, i As Integer, Breite As Integer ..... pixel = Breite End Function
Aufgerufen wird diese in:
Code :1 2 3 4 5 6 7
Sub Schaltfläche3_BeiKlick() Dim x As String .... x = Cells(r, 4).Value var = pixel(x) ..... End Sub
Jedoch bekomme ich beim Kompilieren immer den Fehler: "Erwartet: Datenfeld" beim Aufruf: var = pixel (x)
Weiß jemand woran das liegt?
-
Hi...
Ich denke das du nen Konflikt verursachst aufgrund deiner Art zu Coden.
Schau das du sauber programmierst...
Mach aus "text as String" -> sText as String 'Das s steht für String
aus size -> iSize usw...
So behälst du nen überblick und weist auch welche Werte da drinnen sein können.
Das auch nach Monaten
Nun zu deinem Problem:
Pixel ist eine vorhandene Funktion!
Daher auch der Fehler.
Wie gesagt immer schauen das du keine Konflikte rein bekommst
Versuchs mal so:
hw -> Steht für HelloWorld! Ich verwende immer solche kürzel um Konflikte zu vermeiden.
Code :1 2 3 4 5
Public Function hwPixel(ByVal sText As String) As Integer Dim iSize As Integer, i As Integer, iBreite As Integer ..... hwPixel = iBreite End Function
Dementsprechend dann der Aufruf:
Code :1 2 3 4 5 6 7
Sub Schaltfläche3_BeiKlick() Dim X As String .... X = Cells(r, 4).Value var = hwPixel(X) ..... End Sub
Hoffe das hilft dir weiter...
lg Tody- Bitte erledigte Themen als erledigt Makieren
- Bei Hilfe bitte die Beiträge bewerten
Es gibt 10 Arten von Menschen - Jene die Binär verstehen und jene die es nicht tun...
-
20.10.09 08:34 #13Alexander87 Tutorials.de Gastzugang
Danke!! Lag an "Pixel", aber auch an "size".
An meinem Programmierstil sollte ich echt mal arbeiten
, aber erstmal cool, dass alles funktioniret
-
Hi!
Freut mich das ich dir helfen konnte.
Wünsch dir noch viel spass am Coden!
lg Tody- Bitte erledigte Themen als erledigt Makieren
- Bei Hilfe bitte die Beiträge bewerten
Es gibt 10 Arten von Menschen - Jene die Binär verstehen und jene die es nicht tun...
Ähnliche Themen
-
[VB6] Public Function in Modul benutzen
Von nicok im Forum Visual Basic 6.0Antworten: 2Letzter Beitrag: 02.10.08, 18:12 -
[c#] Verschlüsselung mit private/public Key
Von Passer im Forum .NET CaféAntworten: 1Letzter Beitrag: 28.02.08, 23:23 -
public oder private
Von netrobot im Forum JavaAntworten: 2Letzter Beitrag: 23.12.05, 00:11 -
Files für Download verschlüsseln / Zeitsteuerung / Private & Public Key
Von Mik3e im Forum PHPAntworten: 7Letzter Beitrag: 01.11.05, 13:36 -
Private / Friend / Public bei ActiveX-DLL's
Von couldntfindaname im Forum Visual Basic 6.0Antworten: 0Letzter Beitrag: 29.06.04, 01:34





Zitieren


Login





