समझिए
1. वेरिएबल क्या है?
एक नाम वाला डिब्बा जो मैक्रो चलने तक कोई वैल्यू रखता है।
Dim price As Double
price = 18000
MsgBox price * 1.18
Dim उसे घोषित करता है, As उसका टाइप बताता है।
2. आम डेटा टाइप
| टाइप | क्या रखता है | उदाहरण |
|---|---|---|
Long |
लगभग ±2.1 अरब तक की पूर्ण संख्या | रो नंबर, मात्रा |
Double |
दशमलव | कीमत, रेट |
String |
टेक्स्ट | नाम, फ़ाइल पाथ |
Boolean |
True / False | फ़्लैग |
Date |
तारीख़ और समय | #10/1/2026# या DateSerial(2026, 10, 1) |
Variant |
कुछ भी (टाइप न देने पर डिफ़ॉल्ट) | सेल से पढ़ी वैल्यू |
रो नंबर के लिए Integer नहीं, Long इस्तेमाल करें। Integer 32,767 पर रुक जाता है, इसलिए 40,000 रो वाली शीट पर "Overflow" एरर आता है।
# वाली तारीख़ हमेशा महीना/दिन/साल होती है। उलझन से बचने के लिए DateSerial(year, month, day) इस्तेमाल करें।
3. ऑब्जेक्ट वेरिएबल को Set चाहिए
शीट, रेंज और वर्कबुक ऑब्जेक्ट हैं। इन्हें Set से असाइन करें:
Dim ws As Worksheet
Dim rng As Range
Set ws = ThisWorkbook.Worksheets("Data")
Set rng = ws.Range("A1:E100")
rng.Font.Name = "Calibri"
Set भूलने पर एरर 91 ("Object variable not set") आता है।
ThisWorkbook = वह फ़ाइल जिसमें कोड है। ActiveWorkbook = जो फ़ाइल सामने है। जब तक किसी और फ़ाइल की बात न हो, ThisWorkbook को प्राथमिकता दें।
4. Option Explicit
इसके बिना टाइपो चुपचाप एक नया खाली वेरिएबल बना देता है:
total = 500
MsgBox totl ' shows blank — no error!
हर मॉड्यूल में सबसे ऊपर यह लिखें:
Option Explicit
अब जब तक हर वेरिएबल घोषित न हो, VBA चलने से मना कर देता है, और टाइपो की ओर इशारा करता है।
इसे अपने आप लगवाएँ: VBA Editor में Tools → Options → Require Variable Declaration टिक करें। हर नया मॉड्यूल Option Explicit से शुरू होगा।
5. Constants
जो वैल्यू कभी नहीं बदलतीं:
Const GST_RATE As Double = 0.18
Const DATA_SHEET As String = "Data"
पूरे कोड में ढूँढने की जगह एक ही जगह बदलें।
6. Scope — वेरिएबल कहाँ तक रहता है
- Sub के अंदर
Dimसे घोषित: सिर्फ़ उस Sub के चलने तक। - मॉड्यूल के ऊपर (Option Explicit के बाद)
Privateसे: उस मॉड्यूल के सारे Sub साझा करते हैं। - ऊपर
Public: हर मॉड्यूल में उपलब्ध। कम इस्तेमाल करें।
7. सब एक साथ
Option Explicit
Const GST_RATE As Double = 0.18
Sub AddGST()
Dim ws As Worksheet
Dim amount As Double
Dim gst As Double
Set ws = ThisWorkbook.Worksheets("Data")
amount = ws.Range("B2").Value
gst = amount * GST_RATE
ws.Range("C2").Value = gst
ws.Range("D2").Value = amount + gst
End Sub
आम गलतियाँ
रो के लिए Integer इस्तेमाल करना। ऑब्जेक्ट के लिए Set भूलना। Dim a, b, c As Long लिखना — सिर्फ़ c Long है; a और b Variant बन जाते हैं। Dim a As Long, b As Long, c As Long लिखें।