Ich habe eine VBA-Anwendung, die alle HTML-Tabellen von einer Website herunterlädt und sie in ein Arbeitsblatt analysiert. Dann habe ich Code geschrieben, der eine Zeichenfolge in der Kopfzeile jeder Tabelle in Spalte A findet, diese Zelle aktiviert, den Bereich der aktuellen Region identifiziert und dem Namen des Tabellenblatt-Managers einen Listenobjektnamen hinzufügt. Das Problem, das ich habe, ist mit der Codezeile 260, wo das Nachrichtenfeld die Anzahl der Zeilen in der Tabelle anzeigt. Die Nummer ist immer gleich, auch wenn die Tabellen eine andere Anzahl von Zeilen haben. Ich glaube, das Problem liegt in den Codezeilen 210 bis 250. Ich habe das ganze Web einschließlich des Stack-Überlaufs durchsucht und finde keine Lösung.Range.Areas gibt falsche Anzahl von Zeilen zurück
Kann jemand sehen, warum die Zahl, die im Nachrichtenfeld angezeigt wird, nicht die Anzahl der Zeilen in der Tabelle widerspiegelt?
'---------------------------------------------------------------------------------------
' Method : test_currentregion_IncludeHeaders
' Author : Richard
' Date : 10/4/2016
' Purpose: Find cell with value and turn into named table with headers
'---------------------------------------------------------------------------------------
Sub test_currentregion_IncludeHeaders()
10 On Error GoTo test_currentregion_IncludeHeaders_Error
'convert all tables (listobjects) to ranges
Dim WS As Worksheet, LO As ListObject
20 For Each WS In Worksheets
30 For Each LO In WS.ListObjects
40 LO.Unlist
50 Next
60 Next
'find currentregions and add table
Dim tbl As Object
Dim c As Object
Dim firstAddress As Variant
Dim Hdr As String
Dim rngTable As Range
Dim rows As Long
Dim Line As Variant
Dim iCounter As Long
70 Hdr = "Header"
80 iCounter = 1
90 rows = 0
100 With ThisWorkbook.Worksheets(1).Range("A:A")
110 Set c = .Find(Hdr, LookIn:=xlValues)
120 If Not c Is Nothing Then
130 firstAddress = c.Address
140 c.Select 'must select object
150 End If
160 Do
170 With ThisWorkbook.Worksheets(1)
180 Set rngTable = c.CurrentRegion
190 .ListObjects.Add(SourceType:=xlSrcRange, Source:=rngTable, _
xlListObjectHasHeaders:=xlYes, TableStyleName:="TableStyleMedium1") _
.Name = "List" & iCounter
200 End With
210 With ThisWorkbook.Worksheets(1).ListObjects(1)
220 For Each Line In .Range.SpecialCells(xlCellTypeVisible).Areas
230 rows = rows + Line.rows.Count
240 Next
250 End With
260 MsgBox "Number of rows displayed = " & rows
'reset selected variables
270 iCounter = iCounter + 1
280 rows = 0
290 Set Line = Nothing
'find next currentregion
300 Set c = .FindNext(c)
310 Loop While Not c Is Nothing And c.Address <> firstAddress
320 End With
330 On Error GoTo 0
340 Exit Sub
test_currentregion_IncludeHeaders_Error:
350 MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure_test_currentregion_IncludeHeaders of Sub current_region"
End Sub
ich einen Link zu dem Makro aktiviert Arbeitsmappe auf Microsoft Onedrive enthalten. – user2948870
Willkommen auf der Website! Bitte [bearbeite deine Frage] (https://stackoverflow.com/posts/39907765/edit), um den kleinsten Teil des Codes einzubeziehen, der notwendig ist, um das Problem zu zeigen. Auf der [Tour] (https://stackoverflow.com/tour) finden Sie weitere Informationen zu Fragen, die qualitativ hochwertige Antworten liefern. – cxw
'test_currentregion_IncludeHeaders' ist nicht zu groß für den Post. –