With स्टेटमेंट
With स्टेटमेंट एक ही ऑब्जेक्ट पर कई ऑपरेशन करते समय दोहराव वाले ऑब्जेक्ट संदर्भों को समाप्त करता है। यह आपके VBA कोड को अधिक पठनीय और कुशल बनाता है।
With स्टेटमेंट का उद्देश्य
With स्टेटमेंट के बिना, समान ऑब्जेक्ट को बार-बार संदर्भित करना होता है:
' With के बिना - दोहराव वाला कोड
Sub WithKeBina()
Range("A1").Value = "नाम"
Range("A1").Font.Bold = True
Range("A1").Font.Size = 14
Range("A1").Font.Color = RGB(0, 0, 255)
Range("A1").Interior.Color = RGB(255, 255, 0)
End Sub
With स्टेटमेंट के साथ, कोड बहुत साफ हो जाता है:
' With के साथ - साफ कोड
Sub WithKeSaath()
With Range("A1")
.Value = "नाम"
.Font.Bold = True
.Font.Size = 14
.Font.Color = RGB(0, 0, 255)
.Interior.Color = RGB(255, 255, 0)
End With
End Sub
बेसिक सिंटैक्स
With ऑब्जेक्ट
.प्रॉपर्टी = मूल्य
.मेथड
End With
With के लाभ
1. बेहतर पठनीयता
लंबे ऑब्जेक्ट संदर्भों को दोहराने की आवश्यकता नहीं:
Sub PadhneYogyKod()
With ThisWorkbook.Worksheets("Data").Range("A1:D100")
.Font.Name = "Arial"
.Font.Size = 11
.Borders.LineStyle = xlContinuous
End With
End Sub
2. बेहतर प्रदर्शन
ऑब्जेक्ट को एक बार मूल्यांकित किया जाता है:
Sub PradarshhanSudhar()
' ऑब्जेक्ट केवल एक बार मूल्यांकित होता है
With Worksheets("Sheet1").Range("A1:Z1000")
.Value = 0
.NumberFormat = "#,##0"
.Font.Bold = True
End With
End Sub
3. कम टाइपिंग
लंबी ऑब्जेक्ट श्रृंखलाओं के लिए विशेष रूप से उपयोगी।
नेस्टेड With स्टेटमेंट
With स्टेटमेंट को नेस्ट किया जा सकता है:
Sub NestedWith()
With Range("A1")
.Value = "टेस्ट"
With .Font
.Bold = True
.Size = 14
.Color = RGB(255, 0, 0)
End With
With .Borders
.LineStyle = xlContinuous
.Weight = xlThin
End With
End With
End Sub
नेस्टेड With में, सबसे अंदर का With लागू होता है। बाहरी With को एक्सेस करने के लिए पूर्ण संदर्भ उपयोग करें।
प्रैक्टिकल उदाहरण
Excel रेंज फॉर्मेटिंग
Sub RangeFormat()
With Range("A1:D10")
' मूल्य
.Value = 100
' फॉन्ट
With .Font
.Name = "Arial"
.Size = 12
.Bold = True
End With
' बॉर्डर
.Borders.LineStyle = xlContinuous
' संरेखण
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
End Sub
चार्ट फॉर्मेटिंग
Sub ChartFormat()
With ActiveChart
.ChartType = xlColumnClustered
.HasTitle = True
.ChartTitle.Text = "बिक्री रिपोर्ट"
With .Legend
.Position = xlLegendPositionBottom
.Font.Size = 10
End With
End With
End Sub
सावधानियां
1. With के अंदर ऑब्जेक्ट न बदलें
Sub SavdhaniParivarthan()
Dim ws As Worksheet
Set ws = Worksheets("Sheet1")
With ws
.Range("A1").Value = "टेस्ट"
' ws को यहां न बदलें - अप्रत्याशित व्यवहार हो सकता है
.Range("B1").Value = "डेटा"
End With
End Sub
With में दिया गया ऑब्जेक्ट ब्लॉक में प्रवेश करते समय केवल एक बार मूल्यांकित होता है। ब्लॉक के अंदर उस वेरिएबल को Set से दोबारा असाइन करने पर भी ब्लॉक का लक्ष्य नहीं बदलता; ऑब्जेक्ट बदलने के लिए End With से ब्लॉक बंद करके नया With शुरू करें।
2. त्रुटि प्रबंधन
Sub WithTrutiPrabandhan()
On Error GoTo ErrorHandler
With Range("A1")
.Value = "टेस्ट"
.Font.Bold = True
End With
Exit Sub
ErrorHandler:
MsgBox "त्रुटि: " & Err.Description
End Sub
सारांश
| पहलू | विवरण |
|---|---|
| उद्देश्य | दोहराव वाले ऑब्जेक्ट संदर्भ हटाना |
| सिंटैक्स | With ऑब्जेक्ट ... End With |
| लाभ | पठनीयता, प्रदर्शन, कम टाइपिंग |
| नेस्टिंग | समर्थित |
| सावधानी | With के अंदर ऑब्जेक्ट न बदलें |
With स्टेटमेंट VBA कोड को साफ और कुशल बनाने का एक शक्तिशाली तरीका है।