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

VBA: Werte von Datenfeld beibehalten

VBA: Werte von Datenfeld beibehalten
Datenfeld
Hallo
Ich rufe in einer Prozedur eine Sub-Prozedur auf, welche ein Datenfeld liefern und dessen Werte an die aufrufende Prozedur zur weiteren Verarbeitung zurückgeben soll.
Leider gehen die Werte des Datenfelds verloren, sobald die aufgerufene Prozedur beendet wird.
Wie umgehe ich das?
Hier die Codings:
Aufrufende Prozedur:
Static

Sub Chk_Accord_SelList(inpWB As Workbook)
Dim cct As Integer  'Spaltenzähler
Dim a As Variant
Dim col_title As String
Dim r_ct As Integer
Static vals(10) As String
For cct = 2 To col_count_empl
a = Application.Match(Workbooks(inpWB.Name).Sheets(1).Cells(6, cct), ThisWorkbook.Sheets(" _
Zuordnung Var_SelLists").Range("a4:a14"), 0)
If IsNumeric(a) Then 'wenn  vorhanden dann
'Hier kommt der Code rein
col_title = Workbooks(inpWB.Name).Sheets(1).Cells(6, cct).Value
For r_ct = 8 To row_count_empl
If Not Workbooks(inpWB.Name).Sheets(1).Cells(r_ct, cct) = "" Then
               Call string_trennen(Workbooks(inpWB.Name).Sheets(1).Cells(r_ct, cct), ",") _
b>            End If
Next
Else                     'sonst (wenn Fehler)
'nichts machen
End If
Next
End Sub

aufgerufene Prozedur:
Static

Sub string_trennen(zelle As Range, trennzeichen As String)
Dim pos As Integer
Dim inh As String, teilstr As String, comp_val As String
Dim int1 As Integer
Static vals(10) As String
'Funktion: Einzelne Zeichenketten aus einer Gesamtkette extrahieren
' und in Datenfeld schreiben zur späteren Verarbeitung
inh = zelle.Value
int1 = 0
For pos = 1 To Len(inh)
If Not Mid(inh, pos, 1) = trennzeichen Then
teilstr = teilstr & Mid(inh, pos, 1)
Else
int1 = int1 + 1
comp_val = Application.WorksheetFunction.Trim(teilstr)
vals(int1) = comp_val
teilstr = ""
End If
Next
End Sub

Danke für eure Hilfe!
Gruss, Rudi

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

Betreff
Benutzer
Anzeige
AW: VBA: Werte von Datenfeld beibehalten
27.06.2012 11:25:20
Datenfeld
Hi Rudi
Den Code habe ich nicht analysiert, aber ich denke Du benötigst eine Funktion anstelle einer Prozedur.
Hier ein vereinfachtes Beispiel:
Sub test()
Dim strTest As String
strTest = "Hallo"
MsgBox hopphopp(strTest)
End Sub

Function hopphopp(strTest As String) As String
Dim strErgebnis
strErgebnis = strTest & " Welt"
hopphopp = strErgebnis
End Function

cu
Chris
AW: VBA: Werte von Datenfeld beibehalten
27.06.2012 11:33:31
Datenfeld
Moin,
ich habe es mal grob ueberflogen.
Folgendes ohne Gewaehr:
Dein Datenfeld ist wohl das Vals(10)
Du deklarierst diese Variable in jeder Prozedur (Sub), somit existiert dieses Datenfeld auch zwei mal.
Das Vals, was du in der Prozedur "string_trennen" bearbeitest ist vollkommen eine andere als das in der "aufrufenden" Prozedur.
Lösung:
Entweder deklarierst du das Datenfeld global (ausserhalb der einzelnen Prozeduren) oder
Deine aufgerufene Prozedur deklarierst du als Function anstatt Sub.
Bei Function hast du die Moeglichkeit einen Wert zurueckzugeben.
mfg
Anzeige
AW: VBA: Werte von Datenfeld beibehalten
27.06.2012 15:49:23
Datenfeld
Hallo Yusuf
Das mit der globalen Deklarierung habe ich bereits probiert: Hat nichts gebracht :-(
Deshalb denke ich, ich versuch's mit der Funktion.
Gruss, Ruedi
AW: VBA: Werte von Datenfeld beibehalten
27.06.2012 15:41:33
Datenfeld
Hallo ChrisL, Hallo Yusuf
Danke für euren Input! Ich versuch's mal mit einer Funktion, falls ich Probleme habe, komme ich wieder.
Gruss, Rudi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige