Thema Datum  Von Nutzer Rating
Antwort
15.11.2017 13:03:34 POLI
NotSolved
15.11.2017 13:20:30 Gast18
NotSolved
15.11.2017 13:53:01 Gast92771
NotSolved
Blau String an Type Struktur übergeben
15.11.2017 16:05:46 xlKing
NotSolved
15.11.2017 17:28:44 Mackie
NotSolved
15.11.2017 17:29:16 Mackie
NotSolved

Ansicht des Beitrags:
Von:
xlKing
Datum:
15.11.2017 16:05:46
Views:
594
Rating: Antwort:
  Ja
Thema:
String an Type Struktur übergeben

Hallo Poli,

du könntest das z.B. in eine Sub auslagern. Um die einmalige Zuweisung zu den einzelnen Eigenschaften kommst du aber nicht umhin.

Type Data

 Name1 As String * 10
 Name2 As String * 10
 Email  As String * 50

End Type

Sub test()

Dim sData As String * 50
Dim udtData As Data

sData = "Name1Name1Name2Name2AA@test.deAA@test.deAA@test.deAA@test.deAA@test.de"

Setdata udtData, sData

MsgBox udtData.Name1
MsgBox udtData.Name2
MsgBox udtData.Email

End Sub

Sub Setdata(temp As Data, sData As String)
  
temp.Name1 = Mid(sData, 1, 10)
temp.Name2 = Mid(sData, 11, 10)
temp.Email = Mid(sData, 21, 50)
  
End Sub

Allerdings: Zeichenfolgen fester Länge verwendet heutzutage eigentlich niemand mehr. Das macht nur Sinn, wenn du ohne Zuhilfename der Left-Funktion überzählige Zeichen abschneiden und kürzere Strings automatisch mit Leerzeichen auf die gewünschte Länge auffüllen willst. Grade letzteres nimmt aber unnötig Speicherplatz ein. Außerdem würde dein Übergabestring unnötig lang und unübersichtlich werden. Hier mal eine Alternative, bei der du lediglich ein beliebiges Trennzeichen zu setzen brauchst  - z.B. das Semikolon. Dann kannst du die Zuweisung auch über die Split-Funktion aus einem durch diese erzeugten Array auslesen. Dadurch dürfen die übergebenen Namen dann auch unterschiedlich lang sein.

Type Data

 Name1 As String
 Name2 As String
 Email  As String

End Type

Sub test()

Dim sData As String
Dim udtData As Data
Dim arr As Variant

sData = "Name1;Name2;AA@test.de"

Setdata udtData, sData

MsgBox udtData.Name1
MsgBox udtData.Name2
MsgBox udtData.Email

End Sub

Sub Setdata(temp As Data, sData As String)
  
Dim arr As Variant
arr = Split(sData, ";")
  
temp.Name1 = arr(0)
temp.Name2 = arr(1)
temp.Email = arr(2)
  
End Sub

Falls du doch eine feste Länge brauchst, dann lieber nur die Type-Strings auf feste Länge setzen, aber die Übergabe variabel halten. Ist benutzerfreundlicher.

Gruß Mr. K.


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
15.11.2017 13:03:34 POLI
NotSolved
15.11.2017 13:20:30 Gast18
NotSolved
15.11.2017 13:53:01 Gast92771
NotSolved
Blau String an Type Struktur übergeben
15.11.2017 16:05:46 xlKing
NotSolved
15.11.2017 17:28:44 Mackie
NotSolved
15.11.2017 17:29:16 Mackie
NotSolved