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

Sub ruft Function auf; Ergebnis in Array speichern

Sub ruft Function auf; Ergebnis in Array speichern
Enrico
Hallo liebe Forumsmitglieder,
mit Hilfe der Suche war es mir nicht moeglich mein Problem zu loesen, ich denke aber fuer einen von euch sollte es kein Problem sein :-)
Ich habe eine Sub Prozedur geschrieben, die bei einer bestimmten Bedingung eine Funktion called. Das funktioniert auch alles einwandfrei.
Nun habe ich gelesen, dass es angeblich nicht moeglich ist, dass Ergebnis der Function wieder mit zurueck in die Sub zu uebernehmen.
Aus diesem Grund dachte ich mir, okay, dann speicher ich eben alle Werte in einem Array. Als Anfaenger faellt es mir schwer mit diesen Arrays umzugehen... :-(
Erste kleinere Versuche funktionierten ganz gut, aber in mein Programm einbinden konnte ich es nicht.
Fehlermeldung ist immer in der Function, dass die Sub oder Function nicht definiert ist...
Anbei mein Code mit BITTE um schnellstmoegliche Loesungsvorschlaege ;-)
Danke schon mal vorab!
Gruss aus Shanghai
"
Dim IntArr(1 To 500, 1 To 28) As Integer
Public Sub test22()
Dim Sht As Worksheet
Dim SSheetname As String
i = 1
'Application.ScreenUpdating = False
For Each Sht In ActiveWorkbook.Worksheets
Sht.Activate
SSheetname = ActiveSheet.Name
Length = Len(SSheetname)
PositionMinus = InStr(SSheetname, "-")
If Length = 7 And PositionMinus = 5 Then
sheetname = SSheetname
Call Module1.TotalQtyWeek(sheetname, i)
i = i + 1
End If
Next Sht
End Sub
Public Function TotalQtyWeek(sheetname, i)
Sheets(sheetname).Activate
ActiveSheet.Columns("t:v").Select
Selection.Find(What:="Total Manpower", After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, MatchByte:=False, SearchFormat:=False).Activate
LastRow = ActiveCell.Row - 1
IntArr(i, 1) = 15        'HIER PASSIERT DER FEHLER?
End Function

"

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Sub ruft Function auf; Ergebnis in Array speichern
09.03.2010 07:35:34
Hajo_Zi
Hallo Enrico,
die Variable I ist in der Funktion schon festgelegt?
Du kannst schon mit einer Funktion einen Wert übergeben, kein Array.

AW: Sub ruft Function auf; Ergebnis in Array speichern
09.03.2010 08:40:18
Josef

Hallo Enrico,
natürlich kann eine Funktion ein Array als Rückgabewert liefern. Deine Funktion liefert allerdings gar keinen Rückgabewert, sondern füllt ein öffentlich deklariertes Array, das ist etwas anderes. Beschreib mal, was diese Konstruktion berechnen soll, den mir scheint das etwas umständlich. Vielleicht hilt zur Erklärung eine kleine Beispieldatei.

Gruß Sepp

Anzeige
AW: Sub ruft Function auf; Ergebnis in Array speichern
09.03.2010 08:46:53
Enrico
Moin hajo,
danke fuer die Antwort.
Da ich ein wenig unter Zeitdruck stehe, habe ich die "handwerksmethode" gewaehlt und speichere meine daten in einem sheet ab, wo ich sie wieder rauslesen kann...
das mit dem array ist mir zu kompliziert, bzw. das versteh ich nicht.
allerdings wuerde mich interessieren, wie du das gemeint hast, "mit einer Funktion einen Wert uebergeben"
sprich:
die Sub A ruft die Funktion B auf mit Call und berechnet zum beispiel 5+3 = 8 und nun moechte die funktion B die 8 wieder an die Sub A zurueckgeben...
Bsp:
Sub a()
bla bla
i=5
bla bla
if i = 5 then
call B(i)
end if
' zurueck kommt meinetwegen j
j= j*2 '(im bsp. dann 16)
End Sub
Public Function b(i)
j=i+3
End Function
und nun preisfrage: Ich habe es noch nicht geschafft in der SUB dieses j aus der Function zu benutzen... ;-(
vielleicht stehe ich aber auch nur auf dem schlauch?
Anzeige
AW: Sub ruft Function auf; Ergebnis in Array speichern
09.03.2010 09:07:23
Josef

Hallo Enrico,
da gibts mehrere Möglichkeiten, hier mal zwei davon.

'Beispiel1:
Sub enrico()
  Dim dblReturn As Double
  
  dblReturn = ZeigsEnrico(3, 4)
  
  MsgBox CStr(dblReturn)
End Sub

Function ZeigsEnrico(ersteZahl As Double, zweiteZahl As Double) As Double
  ZeigsEnrico = ersteZahl * zweiteZahl
End Function

'Beispiel2:
Sub enrico2()
  Dim lngIndex As Long
  Dim vntArray() As Variant
  
  If ZeigsEnrico2(vntArray, 1, 10) > -1 Then
    For lngIndex = 0 To UBound(vntArray)
      Debug.Print vntArray(lngIndex)
    Next
  End If
  
End Sub

Function ZeigsEnrico2(ByRef vntX As Variant, a, b) As Long
  Dim c As Long, vntTemp() As Variant
  ZeigsEnrico2 = -1
  
  If IsNumeric(a) And IsNumeric(b) Then
    ZeigsEnrico2 = 0
    Redim vntTemp(0 To b - a)
    For c = 0 To UBound(vntTemp)
      vntTemp(c) = c * a * b
    Next
    vntX = vntTemp
  End If
End Function

Gruß Sepp

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige