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

فرض کنید یک کاربرگ خالی دارید و محدوده A1:F1 دارای فرمت "ادغام و مرکز" است که روی آن اعمال شده است. اگر ستون B را با کلیک کردن روی عنوان ستون انتخاب کنید، اکسل با دقت ستون B را انتخاب کرده و سلول B2 را به سلول فعال تبدیل می کند. این رفتار در Excel 2000 یا Excel 2002 اصلاح شد. در نسخه های قبلی اکسل، سلول ادغام شده (A1:F1) را در انتخاب دریافت می کنید.

ظاهراً VBA تا حدودی از رفتار رابط کاربری عقب می ماند، زیرا انتخاب کل ستون B نیز به انتخاب تمام ستون ها، A تا F ختم می شود:

Sub TestMacro1()
    Range("B3").EntireColumn.Select
End Sub

به نظر می رسد هیچ راهی برای دور زدن این رفتار وجود ندارد. حتی اگر متد EntireColumn را حذف کنید و به سادگی ستون B را انتخاب کنید، باز هم تمام ستون ها، A تا F را دریافت می کنید:

Sub TestMacro2()
    Range("B:B").Select
End Sub

احتمالاً این یک رویکرد برنامه نویسی بهتر است که ستونی را که برای انجام برخی اقدامات بر روی آن ستون آماده است انتخاب نکنید، بلکه مستقیماً آن عمل را انجام دهید. برای مثال، فرض کنید می خواهید تمام سلول های ستون B را پررنگ کنید. شما می توانید این کار را به این صورت انجام دهید:

Sub TestMacro3()
    Range("B3").EntireColumn.Font.Bold = True
End Sub

این فقط سلول های ستون B را تحت تاثیر قرار می دهد و هیچ چیز در A یا C تا F را تحت تاثیر قرار می دهد. شما می توانید به طور مشابه از یک رویکرد تکراری برای پردازش سلول های ستون مورد نظر استفاده کنید:

Sub TestMacro4()
    Dim rCell As Range
    Dim X As Long

    X = 1
    For Each rCell In Range("B:B")
        rCell.Value = X
        X = X + 1
    Next
End Sub

این یک مقدار را در هر سلول در ستون B وارد می کند، و به راحتی هر ادغامی که شامل یک سلول در ستون B باشد را نادیده می گیرد.

اگر اجباری است که بتوانید یک ستون کامل را انتخاب کنید، بدون اینکه هیچ ستونی به دلیل سلول های ادغام شده اضافه شود، ممکن است وسوسه شوید که از ویژگی MergeCells برای بررسی سلول های ادغام شده استفاده کنید. با توجه به راهنمای آنلاین VBA، موارد زیر باید سلول های ادغام شده در انتخاب را شناسایی کرده و سپس از ماکرو خارج شوند:

Sub TestMacro5()
    Range("B3").EntireColumn.Select
    If Selection.MergeCells Then
        Exit Sub
    End If

 Perform rest of macro

End Sub

متاسفانه، آزمایش نشان می دهد که این کد کار نخواهد کرد. ویژگی MergeCells ظاهراً تنها زمانی True را برمی گرداند که کل انتخاب از سلول های ادغام شده تشکیل شده باشد، نه اگر انتخاب فقط حاوی چند سلول ادغام شده باشد. این بدان معناست که برای تعیین اینکه آیا سلول های ادغام شده انتخاب مورد نظر را تغییر داده اند یا خیر، به روش دیگری موکول شده اید، مانند موارد زیر:

Sub TestMacro6()
    Range("B3").EntireColumn.Select
    If Selection.Columns.Count > 1 Then
        Exit Sub
    End If

 Perform rest of macro

End Sub

این رویکرد تعداد ستون های انتخابی را بررسی می کند و اگر اکسل گزارش دهد که بیش از یک ستون وجود دارد، حذف می شود.

اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

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

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

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

سوال مشابهی یافت نشد

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما

23.2k سوال

8.5k پاسخ

608 دیدگاه

9.7k کاربر

147 نفر آنلاین
0 عضو و 147 مهمان در سایت حاضرند
بازدید امروز: 19321
بازدید دیروز: 25459
بازدید کل: 15246837
...