ایجاد سوال
dark_mode
0 دوستدار 0 امتیاز منفی
35 visibility
موضوع: آفیس توسط:

سم مایل است یک ماکرو ایجاد کند تا هر مقداری که در یک سلول وجود دارد را نفی کند. به عبارت دیگر، اگر سلول حاوی 10 باشد، پس از اجرای ماکرو سلول حاوی -10 خواهد بود. او سعی کرد از ضبط کننده ماکرو برای ضبط اقدامات خود استفاده کند—فشردن F2 ، کلید Home ، وارد کردن یک منهای و سپس فشار دادن Enter . با این حال، ماکرو ثبت شده دقیقاً همان مقدار (-10) را در سلول قرار می دهد، صرف نظر از آنچه قبلاً وجود داشت. بنابراین، سم در تعجب است که چگونه می تواند کلان نفی مورد نظر خود را ایجاد کند.

این به این دلیل رخ می دهد که ضبط کننده ماکرو آنچه را که وارد سلول شده است، ثبت می کند، نه تک تک کلیدها. این بدان معنی است که تنها راه برای انجام این کار، ایجاد ماکرو از ابتدا به جای استفاده از ضبط کننده است.

راه حل مسئله Sams این است که دقیقاً منظور از "نفی" یک سلول را بفهمیم. اگر وظیفه تغییر علامت یک مقدار عددی در یک سلول باشد (به طوری که 5 تبدیل به -5 شود یا -23 تبدیل به 23)، پس ماکرو زیر به خوبی کار خواهد کرد:

Sub NegateSelection1()
    Dim rCell As Range

    For Each rCell In Selection
        If IsNumeric(rCell) And rCell <> 0 Then
            rCell = -rCell
        End If
    Next rCell
End Sub

برای استفاده از ماکرو، یک سلول یا محدوده ای از سلول ها را در کاربرگ خود انتخاب کنید و سپس آن را اجرا کنید. البته می توانید آن را به یک کلید میانبر اختصاص دهید یا آن را به نوار یا نوار ابزار دسترسی سریع اضافه کنید.

توجه داشته باشید که ماکرو دو تست انجام می دهد. ابتدا بررسی می کند که آیا سلول "عددی" است یا خیر، اما این کافی نیست. چرا؟ از آنجا که اگر سلول خالی باشد، باز هم توسط اکسل "عددی" در نظر گرفته می شود، بنابراین در نهایت مقدار 0 را در سلول خواهید داشت. راه حل آزمایش دوم است، برای اطمینان از اینکه اکسل سلول حاوی مقدار 0 را در نظر نمی گیرد. (بله، اکسل در صورت خالی بودن سلول، مقدار 0 را در نظر می گیرد.) همچنین می توانید از تابع IsEmpty برای آزمایش خود استفاده کنید، همچنین:

Sub NegateSelection1()
    Dim rCell As Range

    For Each rCell In Selection
        If IsNumeric(rCell) And Not IsEmpty(rCell) Then
            rCell = -rCell
        End If
    Next rCell
End Sub

اگر وظیفه اطمینان از منفی بودن همه مقادیر در یک انتخاب باشد (به طوری که 5 تبدیل به -5 شود و -23 تغییر نکند)، این تغییر ماکرو کار خواهد کرد:

Sub NegateSelection2()
    Dim rCell As Range

    For Each rCell In Selection
        If IsNumeric(rCell) And Not IsEmpty(rCell) Then
            If rCell > 0 Then rCell = -rCell
        End If
    Next rCell
End Sub
اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

looks_5نام شما برای نمایش - اختیاری
حریم شخصی : آدرس ایمیل شما محفوظ میماند و برای استفاده های تجاری و تبلیغاتی به کار نمی رود
عدد چهار رقمی در تصویر را وارد کنید

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
اگر حساب گوگل دارید به راحتی وارید شوید

0 پاسخ وجود دارد

سوالات مشابه

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما
0 دوستدار 0 امتیاز منفی
0 پاسخ 27 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 36 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 34 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 44 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 32 visibility
ارسال شده در 26 تیر 1402 موضوع: آفیس توسط: Admin

24.3k سوال

9.6k پاسخ

614 دیدگاه

11.2k کاربر

267 نفر آنلاین
0 عضو و 267 مهمان در سایت حاضرند
بازدید امروز: 10214
بازدید دیروز: 25180
بازدید کل: 20347565
...