एक मैक्रो बनाने का प्रयास करना जो एक सक्रिय कार्यपत्रक के बजाय एक निर्दिष्ट कार्यपत्रक पर एक बटन के क्लिक से निष्पादित होगा। मैं निष्पादित करने के लिए कॉपी और पेस्ट प्राप्त करने में सक्षम हूं, लेकिन जैसे ही मैक्रो कॉलम कमांड को सॉर्ट करने के लिए काम करता है, मुझे "400" Mircosoft VBA त्रुटि प्राप्त होती है। कोई डिबग त्रुटि नहीं है और कोई रेखा त्रुटि के साथ टैग नहीं की गई है। मैंने माइक्रोसॉफ्ट 2007 और 2016 में एक ही कोड की कोशिश की है कि यह एक संस्करण मुद्दा था लेकिन वही चलता है। किसी भी दिशा की बहुत सराहना की जाएगी।

Sub GUIDataExtract()
'Copy and paste data from "LOG PALLET RPT CART-" and then sorts and removes duplicates
'Macro is assigned to button for user to update

Dim wksSource As Worksheet, wksDest As Worksheet
Dim rngSource As Range, rngDest As Range

Set wksSource = ThisWorkbook.Worksheets("GUI")
Set wksDest = ThisWorkbook.Worksheets("GUI PIVOT")

'Copy First Range of Data
Set rngSource = wksSource.Range("A:A")

'Paste Values First Range of Data
Set rngDest = wksDest.Range("A:A")
rngSource.Copy
rngDest.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

'Sort First Data Range
wksDest.Sort.SortFields.Clear
wksDest.Sort.SortFields.Add Key:=Range("A2:B133336"), SortOn:=xlSortOnValues, Order:=xlAscending, 
DataOption:=xlSortNormal
With wksDest.Sort
    .SetRange Range("A1:B133336")
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

'Remove Duplicates in Data Range
wksDest.Range("$F$1:$K$133336").RemoveDuplicates Columns:=Array(1, 6), Header:=xlYes


End Sub
0
Margaret Henderson 4 अप्रैल 2020, 13:12
अपने क्रम में, आप श्रेणी A2:B133336 और A1:B133336 परिभाषित कर रहे हैं। मुझे उम्मीद है कि यह अंतर संभवतः एक समस्या पैदा करेगा। कोशिश करें और इसे खत्म करें। फिर आप F1: K133336 से डुप्लिकेट हटाना चाहते हैं। आपके कोड स्निपेट में इस बात का कोई सबूत नहीं है कि उस श्रेणी में कोई मान है।
 – 
Variatus
4 अप्रैल 2020, 13:46
आपका कोड कहाँ (किस कोड मॉड्यूल में) संग्रहीत है?
 – 
Variatus
4 अप्रैल 2020, 13:47
1
एक युक्ति जिसने मुझे मेरे वीबीए प्रयासों में मदद की: Select, Copy, Paste विधियों आदि का उपयोग करने से बचें। आप बस यह कर सकते हैं: rngSource.Value = rngDestination या इससे भी तेज उपयोग .Value2.
 – 
Danny Papadopulos
4 अप्रैल 2020, 13:54
सलाह Variatus के लिए धन्यवाद। मैंने मैक्रो को एक नए मॉड्यूल में सहेजा है और "400" त्रुटि को समाप्त कर दिया है। धन्यवाद! मेरे पास अब सॉर्टिंग के सापेक्ष रन-टाइम 1004 त्रुटि है। "सॉर्ट संदर्भ मान्य नहीं है। सुनिश्चित करें कि यह उस डेटा के भीतर है जिसे आप सॉर्ट करना चाहते हैं, और पहला सॉर्ट बाय बॉक्स समान या रिक्त नहीं है।" मैंने आपके सुझाव के अनुसार परिभाषित श्रेणियों को अपडेट किया है लेकिन मुझे अभी भी वही त्रुटि मिल रही है। डीबग 'सॉर्ट के अंत में लागू करें' को हाइलाइट कर रहा है।
 – 
Margaret Henderson
4 अप्रैल 2020, 15:01

2 जवाब

यह सॉर्टिंग मानदंड दो से अधिक कॉलम होने के कारण है।


WksDest.Sort.SortFields.Add Key:=Range("A2:B133336"), SortOn:=xlSortOnValues, Order:=xlAscending, डेटाऑप्शन:=xlSortNormal

प्रति

WksDest.Sort.SortFields.Add Key:=Range("A2:A133336"), SortOn:=xlSortOnValues, Order:=xlAscending, डेटाऑप्शन:=xlSortNormal

0
Dy.Lee 5 अप्रैल 2020, 08:33