אקסל - שגיאה 1004 בVBA

אנונימי
2020-07-24T13:23:40+00:00

שלום רב, 

יש לי Form שנועד לקבל מהמשתמש מספר ערכים (הזנת קנייה מהסופר) לפי השדות הבאים לדוגמא: 

שם המוצר, מחיר, כמות , ספק, תאריך וכו'. 

הרעיון הוא שאקסל יידע היכן היא השורה הריקה הבאה ויזין את כלל הנתונים מהחלון לתוך השדות הרלוונטיים בשורה. 

הצלחתי וזה עבד יופי, אך לאחר ששיניתי משהו במבנה של הגיליון / אבטחה וביטול אבטחה - זה נתקע על שגיאה. 

להלן הקוד של הכפתור שנועד לאסוף את הנתונים ולהכניס לעמודה הרלוונטית באותה השורה שמצא שריקה. 

זה נתקע בזמן ריצה כבר בשורה הראשונה של הקוד: 

=========================

     Range("A1").End(xlDown).Offset(1).Value = Me.txtbProductName.Value

     Range("B1").End(xlDown).Offset(1).Value = Me.cmbChooseDepartment.Value

     Range("C1").End(xlDown).Offset(1).Value = Me.txtbPrice.Value

     Range("D1").End(xlDown).Offset(1).Value = Me.txtbUnitsNumber.Value

     Range("E1").End(xlDown).Offset(1).Value = Me.cmbChooseUnitType.Value

     Range("G1").End(xlDown).Offset(1).Value = Me.txtbNumOfUnits.Value

     Range("I1").End(xlDown).Offset(1).Value = Me.txtbPurchaseDate.Value

     Range("J1").End(xlDown).Offset(1).Value = Me.cmbChooseSapak.Value

=============================

אודה מאד לעזרתכם, בבקשה. 

תודה רבה וסופ"ש נעים,

שבת שלום,

אייל :)

Microsoft 365 ו- Office | Excel | לשימוש ביתי | Windows

שאלה נעולה. השאלה הזו הועברה מקהילת התמיכה של Microsoft. באפשרותך להצביע אם היא שימושית, אך לא ניתן להוסיף הערות או תשובות או לעקוב אחר השאלה.

0 הערות אין הערות
התשובה התקבלה על-ידי מחבר השאלה
Micky Avidan *** מיקי אבידן 16,531 נקודות מוניטין MVP מנחה דיון מתנדב
2020-07-25T21:55:23+00:00

ראשית תודה רבה על תשובתך. 

הבעיה נפתרה כאשר פתחתי גיליון עבודה חדש ולאחר מכן דאגתי ששורות 1 ו-2 יהיו מלאות בערכים כלשהן. 

החל משורה 3 ואילך הכל עובד חלק. 

אין לי מושג למה לא עבד על שורות קודמות / ריקות.. (הצביע על ערך -4121 בערך..) 

ההסבר מאוד מאוד פשוט.

בזמן שאין עדיין רשומות (כמו בגיליון ריק) כשאתה פוקד: (Range("A1").End(xlDown).Offset(1

זה אומר (במילים) "עמוד על תא A1 רד למטה עד הסוף והמשך לסטות (OFFSET) עוד שורה".

אבל... כשהסמן כבר נמצא בשורה 1048576 אין לו לאן לרדת ולכן אתה מקבל שגיאת VBA

בשיטה שהצעתי אני פוקד עליו: (End(xlUp  שזה אומר: רד לתחתית המסך וחזור לכיוון מעלה (UP) עד לשורה האחרונה שיש בה נתון.

מקווה שכעת הכל ברור.

______________________________________________________________________________________________________________________ אם תגובתי פתרה את בעיתך - לחץ/י נא בצד שמאל, למטה, על 3 הנקודות ואז על:'סמן כתשובה' מיכאל (מיקי) אבידן מחבר מאמרי ויקי, מנחה דיון בפורומים מרובים ב- TechNet ו-Answers  של 'מיקרוסופט' ומנהל פורום 'אופיס' ב'תפוז'.

האם התשובה הזו הייתה מועילה?

אדם אחד ציין שתשובה זו מועילה.
0 הערות אין הערות
התשובה התקבלה על-ידי מחבר השאלה
Micky Avidan *** מיקי אבידן 16,531 נקודות מוניטין MVP מנחה דיון מתנדב
2020-07-25T09:57:05+00:00

שלום רב, 

יש לי Form שנועד לקבל מהמשתמש מספר ערכים (הזנת קנייה מהסופר) לפי השדות הבאים לדוגמא: 

שם המוצר, מחיר, כמות , ספק, תאריך וכו'. 

הרעיון הוא שאקסל יידע היכן היא השורה הריקה הבאה ויזין את כלל הנתונים מהחלון לתוך השדות הרלוונטיים בשורה. הצלחתי וזה עבד יופי, אך לאחר ששיניתי משהו במבנה של הגיליון / אבטחה וביטול אבטחה - זה נתקע על שגיאה. 

kהלן הקוד של הכפתור שנועד לאסוף את הנתונים ולהכניס לעמודה הרלוונטית באותה השורה שמצא שריקה. 

זה נתקע בזמן ריצה כבר בשורה הראשונה של הקוד: 

=========================

     Range("A1").End(xlDown).Offset(1).Value = Me.txtbProductName.Value

.

.

.

=============================

אודה מאד לעזרתכם, בבקשה. 

תודה רבה וסופ"ש נעים,

שבת שלום, אייל :) 

אם אצא בהנחה הגיונית שהטבלה שלך היא 'מלבנית' (רוצה לומר של שורה היא, למעשה, רשומה) די יהיה לבדוק מהו התא הראשון הריק שמתחת לטבלת הנתונים.

הקוד שלך אמור, בעיקרון, להיראות כך כשאת המס' 1-10 אמורים להחליף פקדי ה-****Form שלך.

______________________________________________________________________________________________________________________ אם תגובתי פתרה את בעיתך - לחץ/י נא בצד שמאל, למטה, על 3 הנקודות ואז על:'סמן כתשובה' מיכאל (מיקי) אבידן מחבר מאמרי ויקי, מנחה דיון בפורומים מרובים ב- TechNet ו-Answers  של 'מיקרוסופט' ומנהל פורום 'אופיס' ב'תפוז'.

האם התשובה הזו הייתה מועילה?

אדם אחד ציין שתשובה זו מועילה.
0 הערות אין הערות

3 תשובות נוספות

מיין לפי: המועיל ביותר
  1. אנונימי
    2020-07-26T08:53:39+00:00

    היי מיקי,

    הסיבה שבחרתי דווקא בExclUp זה כיוון ורציתי שהוא ימלא את השורה הריקה הבאה גם אם יש אחר כך שדות מלאים.

    לדוגמא: 

    1  טקסט טקסט טקסט

    2 טקסט טקסט טקסט

    3

    4 טקסט טקסט טקסט

    5

    בUP הוא ימלא את שורה 5. בDown הוא ימלא תחילה את שורה 3. :)

    האם התשובה הזו הייתה מועילה?

    0 הערות אין הערות
  2. אנונימי
    2020-07-26T06:43:31+00:00

    מעולה, תודה רבה <3

    האם התשובה הזו הייתה מועילה?

    0 הערות אין הערות
  3. אנונימי
    2020-07-25T18:20:25+00:00

    ראשית תודה רבה על תשובתך. 

    הבעיה נפתרה כאשר פתחתי גיליון עבודה חדש ולאחר מכן דאגתי ששורות 1 ו-2 יהיו מלאות בערכים כלשהן. 

    החל משורה 3 ואילך הכל עובד חלק. 

    אין לי מושג למה לא עבד על שורות קודמות / ריקות.. (הצביע על ערך -4121 בערך..)

    האם התשובה הזו הייתה מועילה?

    0 הערות אין הערות