اگر در حال توسعه یک کاربرگ برای استفاده دیگران هستید، ممکن است بخواهید آنها همیشه اطلاعات را با حروف بزرگ وارد کنند. اکسل یک تابع کاربرگ را ارائه می دهد که به شما امکان می دهد اطلاعات را به حروف بزرگ تبدیل کنید، اما از آنجایی که افراد در واقع اطلاعات را وارد می کنند، اعمال نمی شود. به عنوان مثال، اگر شخصی اطلاعاتی را در سلول B6 وارد کند، تابع کاربرگ نمی تواند برای تبدیل اطلاعات در B6 به حروف بزرگ استفاده شود.
در عوض، باید از یک ماکرو برای انجام تغییرات برای شما استفاده کنید. هنگام برنامه نویسی در VBA، می توانید اکسل را مجبور کنید هر زمان که چیزی در یک سلول کاربرگ تغییر می کند، یک ماکرو خاص را اجرا کند. ماکرو زیر را می توان برای تبدیل تمام ورودی کاربرگ به حروف بزرگ استفاده کرد:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.HasFormula Then Exit Sub
Application.EnableEvents = False
Target = UCase(Target.Cells(1))
Application.EnableEvents = True
End Sub
اما برای اینکه ماکرو کار کند، باید در یک مکان خاص وارد شود. برای قرار دادن ماکرو مراحل زیر را دنبال کنید:
- ویرایشگر VBA را با فشار دادن Alt+F11 نمایش دهید .
- در پنجره Project، در سمت چپ ویرایشگر، روی نام کاربرگ مورد استفاده خود دوبار کلیک کنید. (شاید لازم باشد ابتدا پوشه VBAProject را باز کنید و سپس پوشه Microsoft Excel Objects را در زیر آن باز کنید.)
- در پنجره کد مربوط به کاربرگ، ماکرو بالا را Paste کنید.
- ویرایشگر VBA را ببندید.
اکنون هر چیزی (به جز فرمول ها) که در هر سلولی از کاربرگ وارد می شود، به طور خودکار به حروف بزرگ تبدیل می شود. اگر نمی خواهید همه چیز تبدیل شود، بلکه فقط سلول ها در یک منطقه خاص از کاربرگ هستند، می توانید ماکرو را کمی تغییر دهید:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not (Application.Intersect(Target, Range("A1:B10")) _
Is Nothing) Then
With Target
If Not .HasFormula Then
Application.EnableEvents = False
.Value = UCase(.Value)
Application.EnableEvents = True
End If
End With
End If
End Sub
در این مثال خاص، تنها متن وارد شده در سلول های A1:B10 تبدیل می شود. بقیه موارد به صورت وارد شده باقی خواهند ماند. اگر نیاز به تبدیل محدوده متفاوتی دارید، آن محدوده را در خط دوم ماکرو مشخص کنید.