मैं थोड़ी देर के लिए वीबीए सीख रहा हूं लेकिन एक समस्या है जिसका मैं सामना कर रहा हूं कि जब तक मुझे पता नहीं चला तब तक मैं इसका पता नहीं लगा पाया।

मैं वीबीए का उपयोग करके कॉलम का नाम देने में सक्षम होना चाहता हूं, इसलिए मैं इसे बाद में अन्य कोशिकाओं/कॉलम में संदर्भ कॉलम (इंडेक्स फ़ंक्शन का उपयोग करके) के रूप में उपयोग कर सकता हूं।

मुझे पता है कि तय किए गए कॉलम का नाम कैसे देना है। लेकिन वह नहीं है जिसकी मुझे तलाश है।

मेरी समस्या का उदाहरण:

इस महीने मैं कॉलम D को TotalAmount नाम दे रहा हूं। वीबीए कोड हो सकता है:

ActiveWorkbook.Names.Add Name:="TotalAmount", RefersToR1C1:="=Sheet1!C4"

मैं INDEX फ़ंक्शन का उपयोग करके अन्य कक्षों में उस कॉलम का उल्लेख करूंगा।

हालांकि, अगले महीने मैं कॉलम D से ठीक पहले एक नया कॉलम (पिछले महीने की बिक्री मान लें) जोड़ रहा हूं। इसलिए अगले महीने मैं जिस नए कॉलम का नाम TotalAmount रखना चाहता हूं, वह D के बजाय कॉलम E होगा।

मुझे पता है कि नया कॉलम जोड़ते समय कॉलम का नामकरण नहीं बदलना चाहिए और कॉलम E स्वतः ही TotalAmount कॉलम बन जाएगा। हालाँकि, मैं इस पर भरोसा नहीं कर सकता क्योंकि एक्सेल शीट अलग-अलग लोगों द्वारा एक्सेस की जाती है और हर कोई अपनी गणना कर रहा है।

तो मैंने यह भी कोशिश की (मुझे यकीन है कि यह बेवकूफ है लेकिन हे, मैं अभी भी एक नोब हूं) लेकिन यह काम नहीं किया :(

Sub Macro4()
    Range("D1").Select 
    '(I can select the desired cell each month using the search function)
    Dim i As Integer
    i = ActiveCell.Column
    ActiveWorkbook.Names.Add Name:="TotalAmount", RefersToR1C1:="=Sheet1!Ci"
End sub

इसलिए मैं बहुत आभारी रहूंगा यदि कोई मेरी मदद कर सकता है या इस विषय पर मेरा मार्गदर्शन कर सकता है।

1
Alomical 6 सितंबर 2016, 17:17

2 जवाब

सबसे बढ़िया उत्तर

'i' एक वेरिएबल है इसलिए आप इसे कोट्स में इस्तेमाल नहीं कर सकते हैं। उद्धरणों में, यह सिर्फ 'i' है और इसका कोई मूल्य नहीं है। कोशिश करें ActiveWorkbook.Names.Add Name:="TotalAmount", RefersToR1C1:="=Sheet1!C" & i
सुनिश्चित नहीं है कि यह आपकी समस्या का समाधान करेगा हालांकि

0
Zac 6 सितंबर 2016, 17:31

आप के लिए सेल खोजने के लिए आप वीबीए प्राप्त कर सकते हैं:

Sub SetNamedRange()
    Dim rng As Range

    Set rng = ThisWorkbook.Worksheets("Sheet1").Range("A1:Z1").Find("TotalAmount")
    ThisWorkbook.Names.Add Name:="TotalAmount", RefersToR1C1:=rng
End Sub

कोड A1:Z1 टेक्स्ट "Total Amount" के लिए खोजता है और नामित श्रेणी को उस सेल में सेट करता है

0
CallumDA 6 सितंबर 2016, 17:38