@יהודי-זה-הכי כתב בבקשה | בדיקה אצל הרב GPT:
שיוסיף שבהקשה על ביטול ייצא ישר מהמאקרו
בקשתך מצוינת!
הכפתור "ביטול" ב-InputBox מחזיר vbNullString (כלומר ""), לכן הוא מתנהג כמו ריק — אבל אפשר לבדוק אם המשתמש לחץ על ביטול ע"י שימוש ב־StrPtr(a) = 0 (טריק ותיק ב־VBA שמזהה ביטול).
הנה הגרסה שלך משודרגת, כך שאם המשתמש לוחץ ביטול, המאקרו ייצא מיד — בלי לשאול שוב:
קוד מתוקן:
Sub שם_מוכר()
' הסתר פעולות עד לסיום המאקרו
Application.ScreenUpdating = False
Dim ws As Worksheet
Dim a As String
Dim m As VbMsgBoxResult
Set ws = ThisWorkbook.Sheets("נתונים")
' שמירת שם קודם
ws.Range("H11").Value = ws.Range("H1").Value
Do
a = InputBox("!!!הזן את שם המוכר החדש", "מוכר", ws.Range("H1").Value)
' אם המשתמש לחץ על ביטול - יציאה
If StrPtr(a) = 0 Then
Exit Sub
End If
If a = "" Then
m = MsgBox("שים לב! לא הוזן שם מוכר. לנסות שוב?", vbYesNo + vbExclamation)
If m = vbNo Then
' מחזיר את השם הישן
ws.Range("H1").Value = ws.Range("H11").Value
Exit Sub
End If
Else
ws.Range("H1").Value = a
Exit Sub
End If
Loop
End Sub
🟢 מה נוסף פה?
✅ השורה:
If StrPtr(a) = 0 Then Exit Sub
בודקת אם המשתמש לחץ על ביטול ויוצאת מיידית מהמאקרו.
אם תרצה, אפשר גם להחזיר הודעה קטנה שמעדכנת: "הפעולה בוטלה" או "השם עודכן בהצלחה".
רוצה שאוסיף את זה?
זלשוה"ק