Notes in Hindi

How to Store Range Data into Array in VBA in Hindi

Makhanlal Chaturvedi University / BCA / VBA programming

Working with Range and Array in VBA in Hindi

How to Store Range Data into Array in VBA in Hindi

Introduction

VBA (Visual Basic for Applications) Excel में automation के लिए एक बहुत ही उपयोगी टूल है। जब भी हम Excel में किसी Range से Data को जल्दी और efficient तरीके से Process करना चाहते हैं, तब हम Arrays का उपयोग करते हैं। इस लेख में हम सीखेंगे कि Excel Sheet के किसी Range को Array में कैसे Store किया जाता है, फिर उस Array को Modify कैसे करते हैं और अंत में उसी Array के Data को वापस Excel Sheet में कैसे लिखा जाता है। इस प्रक्रिया को step-by-step सीखना हर Beginner के लिए आवश्यक है।

What is an Array in VBA?

Array एक ऐसा variable होता है जिसमें हम एक ही नाम से multiple values को Store कर सकते हैं। ये एक ही Data Type की multiple values को एक साथ Store करने के लिए इस्तेमाल होता है। जैसे - Students के marks, Products की prices, आदि।

Why Use Array with Range?

  • Speed: Range के मुकाबले Array में काम करना बहुत तेज़ होता है।
  • Efficiency: एक बार में सारा डेटा Array में ले सकते हैं और Processing के बाद फिर से Sheet में डाल सकते हैं।
  • Memory Usage: यह system resources को efficiently उपयोग करता है।

How to Store Range Data into Array in VBA

जब हमें Excel के किसी Range को VBA में Store करना होता है, तब हम उसे सीधे एक Variant Type के variable में Assign कर सकते हैं। जब हम किसी Range को Assign करते हैं, तो वह Default रूप से 2D Array बन जाता है।

Sub StoreRangeToArray()
  Dim myArray As Variant
  myArray = Range("A1:C5").Value
  MsgBox myArray(1, 1) 'यह A1 की Value दिखाएगा
End Sub

Key Points:

  • यहाँ `myArray` एक 2D Array बनता है जिसका पहला Index 1 होता है, ना कि 0।
  • `Range("A1:C5").Value` से पूरा Range एक साथ Array में आ जाता है।
  • Row और Column दोनों Index से Access किया जाता है जैसे (row, column)।

Reading Excel Sheet Data into Array in Hindi

Step by Step Explanation

  • Step 1: सबसे पहले Excel Sheet में कुछ Sample Data बना लें।
  • Step 2: VBA Editor (ALT + F11) खोलें।
  • Step 3: एक नया Module Insert करें और नीचे दिया गया Code लिखें।
Sub ReadDataIntoArray()
  Dim dataArr As Variant
  dataArr = Worksheets("Sheet1").Range("B2:D6").Value

  Dim i As Long, j As Long
  For i = 1 To UBound(dataArr, 1)
    For j = 1 To UBound(dataArr, 2)
      Debug.Print dataArr(i, j)
    Next j
  Next i
End Sub

समझाइए:

  • यह Code "Sheet1" के B2 से D6 तक के डेटा को Array में Store करता है।
  • फिर For Loop की मदद से सभी Values को Print करता है।
  • `UBound` Function से Array के Size को पता किया जाता है।

Writing Array Data Back to Excel Sheet in Hindi

Step by Step Approach

  • Step 1: एक Array बनाएं या पहले से लिए हुए Range को Modify करें।
  • Step 2: फिर उस Array को किसी Range में Assign करें।
Sub WriteArrayToSheet()
  Dim myData As Variant
  myData = Range("A2:C6").Value

  'Modify First Value
  myData(1, 1) = "Updated"

  'Write back to new Range
  Range("E2:G6").Value = myData
End Sub

समझाइए:

  • यह Code पहले A2:C6 से Data को Array में लेता है।
  • Array में पहला Cell Update करता है।
  • फिर उसे दूसरी Range (E2:G6) में वापस लिख देता है।

Best Practices for Handling Range with Array in VBA in Hindi

1. Use Variant Type for Arrays

  • जब भी आप Range को Array में Store करें, Variant Type का ही Use करें क्योंकि यह Dynamic होता है।

2. Always Use LBound and UBound

  • Array के Size को जानने के लिए कभी भी Hard-coded Values का Use न करें।
  • हमेशा `LBound(array, dimension)` और `UBound(array, dimension)` का उपयोग करें।

3. Avoid Writing to Sheet Inside Loop

  • अगर आप Data को Process करके Excel में Write करना चाहते हैं, तो पहले Array में सारा Data तैयार कर लें और अंत में एक बार में Write करें।

4. Use Application.ScreenUpdating = False

Sub FastProcessing()
  Application.ScreenUpdating = False
  Application.Calculation = xlCalculationManual
  ' आपका कोड यहाँ लिखें
  Application.ScreenUpdating = True
  Application.Calculation = xlCalculationAutomatic
End Sub

5. Use Error Handling

  • कोई भी Runtime Error आने पर Execution रुक सकता है। इसलिए `On Error Resume Next` या `On Error GoTo` का उपयोग करें।

6. Use Named Ranges for Better Readability

  • Sheet में Named Range का Use करना बेहतर होता है ताकि Code अधिक पढ़ने योग्य हो।

7. Always Check if Range is Empty

If WorksheetFunction.CountA(Range("A1:C5")) = 0 Then
  MsgBox "Range is Empty"
End If

8. Avoid Selecting Ranges

  • आपका Code ज्यादा तेज और Professional तभी बनता है जब आप `.Select` या `.Activate` का Use न करें।

9. Use 2D Arrays for Range

  • Excel के Cells हमेशा 2D होते हैं, इसलिए 1D Array से बेहतर होता है कि आप 2D Array Use करें।

10. Array में Null या Empty Values की पहचान

If IsEmpty(myArray(i, j)) Then
  MsgBox "Empty Cell Found"
End If

उपरोक्त सभी Concepts को समझकर आप Excel VBA में Range और Array के बीच बेहतर तरीके से काम कर सकते हैं। इससे आपका Code तेज, Professional और Maintainable बनता है। यह तरीका हर Excel VBA सीखने वाले Beginner के लिए बहुत उपयोगी है और आपको Data को Excel में Auto Process करने में बहुत Help करता है।

FAQs

Excel VBA में range को array में store करने के लिए आपको Variant type variable का उपयोग करना होता है। उदाहरण के लिए: Dim myArray As Variant : myArray = Range("A1:C5").Value। इससे पूरी range एक 2D array में बदल जाती है जिसे row-column index से access किया जा सकता है।
Excel sheet से data को array में read करने के लिए आप worksheet object के साथ range को variant variable में assign कर सकते हैं। जैसे - dataArr = Worksheets("Sheet1").Range("B2:D6").Value। यह एक 2D array create करता है जिसमें data store हो जाता है।
Array के data को Excel sheet में वापस लिखने के लिए उसी shape के range में array assign कर सकते हैं। जैसे: Range("E2:G6").Value = myArray। यह पूरा array एक बार में Excel में paste कर देगा।
Arrays का उपयोग करने से performance कई गुना बेहतर हो जाती है क्योंकि Excel sheet को बार-बार access करना slow होता है। अगर आप पहले data को array में ले आते हैं और फिर processing करते हैं, तो आपका macro तेज चलता है।
आप VBA में IsEmpty() function का उपयोग करके पता लगा सकते हैं कि कोई cell खाली है या नहीं। उदाहरण के लिए: If IsEmpty(myArray(i, j)) Then MsgBox "Empty Cell"
सबसे अच्छा तरीका है कि पहले पूरे range को एक बार में array में load करें, फिर सारे calculations/changes array में करें और अंत में result को एक बार में वापस Excel में write करें। साथ ही, Application.ScreenUpdating = False और Application.Calculation = xlCalculationManual का उपयोग भी performance के लिए ज़रूरी होता है।

Please Give Us Feedback