मेरे पास निम्न कोड है जिसका उपयोग एकाधिक शीट्स पर एकाधिक तालिकाओं को प्रारूपित करने के लिए किया जाता है। अभी यह बिना किसी डेटा वाली तालिका को सॉर्ट करने का प्रयास करते समय शीर्षक में उल्लिखित त्रुटि देता है। अन्यथा, यह ठीक काम करता है।

Dim sht as worksheet
Dim Tbl as Listobject

For Each Sht In Worksheets
If Sht.Name <> "Original" Then
    Set Tbl = Sht.ListObjects(1)
    

    
    With Tbl
    .ListColumns("Pass/fail").Range.Cut
    Tbl.Range(1, 1).End(xlToRight).Offset(0, 1).Insert shift:=xlToRight
    End With
    
    With Tbl
    .ListColumns("Persons for corrective actions").Range.Cut
    Tbl.Range(1, 1).End(xlToRight).Offset(0, -1).Insert shift:=xlToRight
    End With
    
    With Tbl
    .ListColumns("Created By").Range.Cut
    Tbl.Range(1, 1).End(xlToRight).Offset(0, -11).Insert shift:=xlToRight
    End With
    
    With Tbl
    .ListColumns("Description of findings").Range.Cut
    Tbl.Range(1, 1).End(xlToRight).Offset(0, -10).Insert shift:=xlToRight
    End With
    
    With Sht
    .Range("C:F").EntireColumn.Delete
    .Range("G:H").EntireColumn.Delete
    .Range("K:K").EntireColumn.Delete
    End With
    
    With Tbl.Sort.SortFields
            .Clear
            .Add Key:=Tbl.ListColumns("Planned closing date for action").DataBodyRange, _
                 SortOn:=xlSortOnValues, _
                 Order:=xlAscending, _
                 DataOption:=xlSortNormal
    End With
    With Tbl.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

Tbl.DataBodyRange.AutoFilter field:=Tbl.ListColumns("Pass/fail").Index, Criteria1:="FAIL"

Sheets.Add After:=Sht

End If
Next Sht

डीबग किए जाने पर यह इस भाग को हाइलाइट करता है:

   With Tbl.Sort.SortFields
        .Clear
        .Add Key:=Tbl.ListColumns("Planned closing date for action").DataBodyRange, _
             SortOn:=xlSortOnValues, _
             Order:=xlAscending, _
             DataOption:=xlSortNormal

तो मेरा सवाल यह है कि टेबल पर कोई डेटा नहीं होने पर यह काम कैसे करें?

0
Konsta 9 पद 2020, 16:38

1 उत्तर

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

आप जाँच सकते हैं कि तालिका में कोई पंक्तियाँ हैं या नहीं। पंक्तियों की संख्या .ListRows.Count संपत्ति के साथ प्राप्त की जा सकती है।

if Tbl.ListRows.Count > 0 Then
    With Tbl.Sort.SortFields
        .Clear
        .Add Key:=Tbl.ListColumns("Planned closing date for action").DataBodyRange, _
             SortOn:=xlSortOnValues, _
             Order:=xlAscending, _
             DataOption:=xlSortNormal
    End With
    With Tbl.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
       .Apply
    End With
End If
1
FunThomas 9 पद 2020, 13:49