לולאה על 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 עם כל הערכים שאני צריך.
ואז בטופס לקרוא לכל השדות שמות כמו של הערכים שאני צריך, ואז לעשות לולאה על כל השדות ושיכניס לערך שלהם את מה שכתוב בשדה.
זה לדוגמא הערכים: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) של כמה ערכים צמודים אחד ליד השני ולא מפה של מפתח => ערך, לכן השם לגישה עובד רק ברמת השפה (המפרש יודע לתרגם שם של שדה למיקום במבנה) שזה בצורה סטטית (רק שם שמופיע בתוך הקוד בצורה סטטית מתורגם למיקום במבנה) ולא בצורה דינאמית (בזמן ריצה אין קוד שמתרגם שמות למיקומים) -
@ארי כתב בלולאה על Public Type:
יש דרך לעשות את זה?
אחרי חיפוש, לכאורה אין דרך עם
Type(מילות מפתח שהתשמשתי לחיפוש: vba udt dynamic field access ועוד וריאציות של זה. גם בדקתי את התיעוד של מייקרוסופט ועוד אתרים, ולא מצאתי שום ממצא מעניין)
לכאורה הפתרון הוא להשתמש ב-
Collectionבמקום ב-Typeהאמת שדי מובן לי למה אי אפשר עם
Type, כנראה ש-Typeהוא מבנה מאוד פשוט (כמוstructב-C) של כמה ערכים צמודים אחד ליד השני ולא מפה של מפתח => ערך, לכן השם לגישה עובד רק ברמת השפה (המפרש יודע לתרגם שם של שדה למיקום במבנה) שזה בצורה סטטית (רק שם שמופיע בתוך הקוד בצורה סטטית מתורגם למיקום במבנה) ולא בצורה דינאמית (בזמן ריצה אין קוד שמתרגם שמות למיקומים)