मैं शर्त के आधार पर डेटा निकालने के लिए "सारांश" और "गणना" नामक चादरों को छोड़कर सभी वर्कशीट के माध्यम से लगातार लूप करना चाहता हूं (यदि सेल मान "ए" है, डी 6 पर)। उसके बाद, यह कुछ सेल मानों (सेल F3 पर दिनांक) को कॉपी करेगा और उन्हें "काउंट" वर्कशीट पर पेस्ट करेगा। मुझे जिस समस्या का सामना करना पड़ रहा है वह यह है कि मैं उस डेटा को पेस्ट नहीं कर सकता जिसे मैं "गणना" वर्कशीट में चाहता हूं।

धन्यवाद! किसी भी इनपुट/सलाह की सराहना की जाएगी!

मेरा कोड है:

Private Sub CommandButton1_Click()

Dim sh As Worksheet

Dim erow As Long

For Each sh In ActiveWorkbook.Worksheets

    Select Case sh.Name

    Case Is = "Summary", "Count"

    Case Else
    If sh.[B10] = "Wash the whole vehicle" And sh.[D6].Value = "A" Then
        sh.[F3].Copy
        sh.Cells(11, 4).Copy

        sh("Count").Activate
        lastRowRpt = sh("Count").Range("A" & Rows.Count).End(xlUp).Row
        sh("Count").Range("A" & lastRowRpt + 1).Select
        ActiveSheet.Paste

    End If
End Select
Next sh
End Sub
0
Jing Yi 17 अप्रैल 2020, 05:45
sh("Count") के सभी उदाहरणों को Activeworkbook.Worksheets("Count") में बदलें। अन्य मुद्दे भी हैं, लेकिन इससे आपको शुरुआत करनी चाहिए ...
 – 
chris neilsen
17 अप्रैल 2020, 08:21

3 जवाब

बहुत यकीन है कि यह काम नहीं करेगा:

sh.Cells(11, 4).Copy

यदि आप मैक्रो रिकॉर्ड करते हैं और मैन्युअल रूप से कॉपी/पेस्ट को पुन: पेश करते हैं तो आप देखेंगे कि आपको इसका उपयोग करने की आवश्यकता है:

Selection.Copy

कार्य उदाहरण:

Range("B" & lRow & ":G" & lRow).Select
Application.CutCopyMode = False
Selection.Copy
Range("Q" & i).Select
ActiveSheet.Paste
0
Jeremy Thompson 17 अप्रैल 2020, 08:50
VBA मैक्रो रिकॉर्डिंग पूरी तरह से अनावश्यक Select/Activate/Selection/Active…` पैटर्न के व्यापक उपयोग के लिए जानी जाती हैं। वास्तव में, sh.Cells(11, 4).Copy जाने का अत्यधिक उचित तरीका है। और वास्तविक दोष sh("Count") में था (मेरा उत्तर देखें)। मुझे यह अजीब लग रहा था कि एक 46.7k SO उपयोगकर्ता ऐसी गलत बात लिखेगा, लेकिन फिर मैंने देखा कि वे सभी बिंदु VBA के बाहर प्राप्त किए गए हैं। इसलिए मैं आपके उत्तर को कम वोट नहीं दूंगा लेकिन कृपया इसे सही करें या इसे वापस ले लें।
 – 
HTH
17 अप्रैल 2020, 09:32

यदि आपका कोड ऊपर जैसा है, तो मुझे लगता है कि मूल्य पेस्ट टू शीट Count रिक्त है या `रेंज ("F3") के अलावा अन्य मान है।

आपके पास दो कॉपी कोड लाइन है।

sh.[F3].Copy
sh.Cells(11, 4).Copy

यदि आपको दो मान कॉपी करने की आवश्यकता है तो कॉपी करने का प्रयास करें और प्रत्येक के लिए पेस्ट करें। या यदि आपको केवल श्रेणी की प्रतिलिपि बनाने की आवश्यकता है F3 दूसरी प्रतिलिपि पंक्ति (sh.Cells(11, 4).Copy) पर टिप्पणी करने का प्रयास करें।

-1
Adisak Anusornsrirung 17 अप्रैल 2020, 07:23
कृपया मुझे कारण बताएं।
 – 
Adisak Anusornsrirung
17 अप्रैल 2020, 09:34

sh("Count") मान्य सिंटैक्स नहीं है, जबकि Worksheets("Count") है

इसके अलावा आपको Select/Activate कुछ भी करने की आवश्यकता नहीं है, लेकिन पूरी तरह से योग्य श्रेणियों के साथ जाएं

निम्नलिखित नुसार:

Dim sh As Worksheet, shCount As Worksheet ' add 'shCount' as a worksheet variable
Set shCount = Worksheets("Count") ' set 'shCount' variable to worksheet "Count"


For Each sh In ActiveWorkbook.Worksheets

    Select Case sh.Name

        Case Is = "Summary", "Count"

        Case Else
            If sh.Range("D6").Value = "A" Then sh.Range("F3").Copy shCount.Cells(Rows.Count, 1).End(xlUp).Offset(1)
    End Select
Next
0
HTH 17 अप्रैल 2020, 09:26