fx Macro Recorder & VBA Basics
ENहिन्दी

वेरिएबल, डेटा टाइप, Option Explicit

⏱ 13 min

आप क्या सीखेंगे

  • वेरिएबल क्या है?
  • आम डेटा टाइप
  • ऑब्जेक्ट वेरिएबल को Set चाहिए

समझिए

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 लिखें।

अभ्यास

mediumRequire Variable Declaration चालू करें। GST रेट और शीट नाम के constants के साथ एक मैक्रो लिखें जो Qty (B2) और Rate (C2) पढ़े, Amount, GST और Total निकाले, और D2:F2 में लिखे। एक वेरिएबल के नाम में टाइपो डालें और देखें Option Explicit उसे पकड़ता है।
Option Explicit, Const GST_RATE As Double = 0.18 और Const SHEET_NAME As String = "Data" लिखें। B2*C2 का amount, amount*GST_RATE का gst और दोनों का total D2:F2 में लिखें। Qty 2, Rate 100 पर 200, 36, 236 मिलेंगे। Variable में typo करके Compile चलाएँ।

प्रश्नोत्तरी

रो नंबर के लिए सबसे अच्छा टाइप?
Long
Worksheet वेरिएबल असाइन करने के लिए कौन-सा कीवर्ड?
Set
Dim a, b As String में a किस टाइप का है?
Variant
वेरिएबल, डेटा टाइप, Option Explicit · हिंदी | ExcelWalaa