-
זה הקוד שלי.
הבעיה בשורה 6 שאני משתמש בסוגריים מסולסלים (כמו שהייתי משתמש בפונקציה בתוך הגליון.)
כנראה שאי אפשר ב-vba
יש משהו במקום??Public Function m_kata(wordText As String) As Variant מסכת= ActiveSheet.Range("A6") tanivchar = Selection amuda1 = ActiveSheet.ListObjects("טבלה2").ListColumns(1) amudanivchar = ActiveSheet.ListObjects("טבלה2").ListColumns(3) דף= Application.VLookup(tanivchar, Application.Choose({1, 2}, amudanivchar, amuda1), 2, 0) m_kata = Application.Index(Sheets("מקט").Range("T6:BF356"), Application.Match(דף, Sheets("מקט").Range("S6: S356"), 0), Application.Match(מסכת, Sheets("מקט").Range("T6:BF6"), 0)) End Functionבגליון אני משתמש בזה ככה: (כמובן הפוך LTR)
=VLOOKUP(A1,CHOOSE({1,2}, טבלה2[עמודה3], טבלה2[עמודה1]), 2, 0) -
זה הקוד שלי.
הבעיה בשורה 6 שאני משתמש בסוגריים מסולסלים (כמו שהייתי משתמש בפונקציה בתוך הגליון.)
כנראה שאי אפשר ב-vba
יש משהו במקום??Public Function m_kata(wordText As String) As Variant מסכת= ActiveSheet.Range("A6") tanivchar = Selection amuda1 = ActiveSheet.ListObjects("טבלה2").ListColumns(1) amudanivchar = ActiveSheet.ListObjects("טבלה2").ListColumns(3) דף= Application.VLookup(tanivchar, Application.Choose({1, 2}, amudanivchar, amuda1), 2, 0) m_kata = Application.Index(Sheets("מקט").Range("T6:BF356"), Application.Match(דף, Sheets("מקט").Range("S6: S356"), 0), Application.Match(מסכת, Sheets("מקט").Range("T6:BF6"), 0)) End Functionבגליון אני משתמש בזה ככה: (כמובן הפוך LTR)
=VLOOKUP(A1,CHOOSE({1,2}, טבלה2[עמודה3], טבלה2[עמודה1]), 2, 0) -
@פלורידה אמר בסוגריים מסולסלים vba:
הטעות היא שהפונקציה Choose צריכה לקבל טווח, ושפת VBA לא מפרשת סוגריים מסולסלות בתור טווח.
הפתרון הוא להעביר את הטווח הרצוי כמחרוזת לפונקציה Range, כך:Choose(Range("{1, 2}"), amudanivchar, amuda1) -
-
@פלורידה אתה צודק, אי אפשר להשתמש ב-Range עבור מערכים.
תצרף את הקוד שעשית עם Array, ואת הודעת השגיאה שקיבלת.אין לי שגיאה ברוך ה'.
אלא שהתוצאה של הפונקציה היא:#N/A.מבדיקה שערכתי הבעיה היא בשורות
4,6
(החלופות שנתתי להם בשורות5,7פועלות כראוי.)Public Function m_kata(wordText As String) As Variant masecet = ActiveSheet.Range("A6") tanivchar = Selection amuda1 = ActiveSheet.ListObjects("טבלה24").ListColumns(1) 'amuda1 = Sheets("מקט").Range("c25:c35") amudanivchar = ActiveSheet.ListObjects("טבלה24").ListColumns(3) 'amudanivchar = Sheets("מקט").Range("e25:e35") daf = Application.VLookup(tanivchar, Application.Choose(Array(1, 2), amudanivchar, amuda1), 2, 0) m_kata = Application.Index(Sheets("מקט").Range("T6:BF356"), Application.Match(daf, Sheets("מקט").Range("S6: S356"), 0), Application.Match(masecet, Sheets("מקט").Range("T6:BF6"), 0)) End Functionהסיבה שאני לא משתמש בחלופות, משום שאני צריך שהפונקציה שלי תדע לבד, מהי הטבלה שאני עומד בה, ומהי העמודה שאני עומד בה.
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות
