मेरे पास एक "डेटा" वर्कशीट है जिसमें डेटा है। इसमें 20 कॉलम A-U हैं और G कॉलम में वह तारीख है जो dd/mm/yyyy के लिए है। मेरे पास "नोएंट्री" नामक एक अलग वर्कशीट है और यहां वह जगह है जहां मैं उपयोगकर्ता द्वारा दर्ज की जाने वाली तिथियां (आरंभ-तिथि एल 15 और एल 16 में समाप्ति तिथि) चाहता हूं और एक बार एक बटन ने प्रारंभ और सहित सभी डेटा पर क्लिक किया समाप्ति तिथि "DateData" नामक एक अन्य कार्यपत्रक में जाएगी।

मेरे पास नीचे दिया गया कोड बिल्कुल काम नहीं करता है और मुझे नहीं पता कि क्यों। मुझे जो त्रुटि संदेश मिलता है वह है: रन-टाइम त्रुटि 1004:

Debug Error

Line of code Error

Private Sub CommandButton2_Click()
Application.ScreenUpdating = False

Dim wsData As Worksheet, wsDate As Worksheet, wsNoEntry As Worksheet
Dim dSDate As Date, dEDate As Date
Dim lRowStart As Long, lRowEnd As Long
Dim aData() As Variant
Dim i As Long


'set the worksheet objects
Set wsData = ThisWorkbook.Sheets("Data")
Set wsDate = ThisWorkbook.Sheets("DateData")
Set wsNoEntry = ThisWorkbook.Sheets("NoEntry")

'required variables
dSDate = wsNoEntry.Range("L15").Value
dEDate = wsNoEntry.Range("L16").Value

'set the array - you can make this dynamic!
aData = wsData.Range("A1:U1000").Value

'for loop to find start
For i = 1 To 1000
    If aData(i, 7) = dSDate Then
        lRowStart = i
        Debug.Print "Start row = " & lRowStart
        Exit For
    End If
Next i

'now loop backwards to find end date
For i = 1000 To 1 Step -1
    If aData(i, 7) = dEDate Then
        lRowEnd = i
        Exit For
    End If
Next i

'now we have start and end dates
'going to use copy/ paste for simplicity
wsData.Range("A" & lRowStart, "U" & lRowEnd).Copy
'paste in date sheet
wsDate.Range("A1").PasteSpecial Paste:=xlPasteValues
'clear clipboard
Application.CutCopyMode = False

Application.ScreenUpdating = True
End Sub

NoEntry Worksheet

Data worksheet

किसी भी मदद की सराहना की जाएगी, धन्यवाद :)

0
Donald 10 अक्टूबर 2019, 14:46

1 उत्तर

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

इसको आजमाओ:

Private Sub CommandButton2_Click()
Dim wsData As Worksheet, wsDate As Worksheet, wsNoEntry As Worksheet
Dim dSDate As Date, dEDate As Date
Dim lRowStart As Long, lRowEnd As Long
Dim aData() As Variant
Dim i As Long

Application.ScreenUpdating = False    

Set wsData = ThisWorkbook.Sheets("Data")
Set wsDate = ThisWorkbook.Sheets("DateData")
Set wsNoEntry = ThisWorkbook.Sheets("NoEntry")


dSDate = wsNoEntry.Range("L15").Value
dEDate = wsNoEntry.Range("L16").Value
j = 1

For i = 1 To 1000
    If wsData.Cells(i, 7).Value >= dSDate and wsData.Cells(i, 7).Value <= dEDate Then
        Range("A" & i & ":U" & i).Copy Destination:=wsDate.Range("A" & j)
        j = j + 1
    End If
Next i
Application.ScreenUpdating = True

End Sub

आशा है कि इससे सहायता मिलेगी

1
David García Bodego 14 अक्टूबर 2019, 11:27