לולאה על Public Type
-
בוקר טוב.
יש לי רשימה של המון אלמנטים שאני צריך להכניס להם ערכים מתוך שדות בטופס, וניסיתי לחסוך בכתיבה ולעשות רשימה של Public Type עם כל הערכים שאני צריך.
ואז בטופס לקרוא לכל השדות שמות כמו של הערכים שאני צריך, ואז לעשות לולאה על כל השדות ושיכניס לערך שלהם את מה שכתוב בשדה.
זה לדוגמא הערכים:Public Type Kesher FirstName As String LastName As String ID As Double Address As String End Type
וזה הקוד בטופס:
Dim ctl As Control Dim KesherInfo As Kesher For Each ctl In Me.Controls KesherInfo(ctl.name) = Me(ctl.name) Next
אבל הוא מחזיר לי שגיאה על המילים KesherInfo(ctl.name).
יש דרך לעשות את זה?
תודה! -
@ארי כתב בלולאה על Public Type:
יש דרך לעשות את זה?
אחרי חיפוש, לכאורה אין דרך עם
Type
(מילות מפתח שהתשמשתי לחיפוש: vba udt dynamic field access ועוד וריאציות של זה. גם בדקתי את התיעוד של מייקרוסופט ועוד אתרים, ולא מצאתי שום ממצא מעניין)
לכאורה הפתרון הוא להשתמש ב-
Collection
במקום ב-Type
האמת שדי מובן לי למה אי אפשר עם
Type
, כנראה ש-Type
הוא מבנה מאוד פשוט (כמוstruct
ב-C) של כמה ערכים צמודים אחד ליד השני ולא מפה של מפתח => ערך, לכן השם לגישה עובד רק ברמת השפה (המפרש יודע לתרגם שם של שדה למיקום במבנה) שזה בצורה סטטית (רק שם שמופיע בתוך הקוד בצורה סטטית מתורגם למיקום במבנה) ולא בצורה דינאמית (בזמן ריצה אין קוד שמתרגם שמות למיקומים)