Excel - XLSB mit Makros
02.06.2022 10:56:10
Dema
es mag sein, dass das Problem bereits behandelt worden sind, mir fehlen jedoch die notwendigen Stichworte für eine Suche, um ehrlich zu sein. Daher schonmal sorry vorab, falls das Ganze bereits durchgekaut worden ist.
Zum Sachverhalt. Zur Datenhaltung ist eine Excel Mappe errichtet worden. Diese Mappe besteht aus aus zwei Registern. Register I - Projektübersicht. Register II Metadaten zur Projektliste, Relation wird über Projekt-ID mit Hilfe von S-Verweisen hergestellt. Zur gemeinsamen Nutzung unter 365 mit Makros ist das Dateiformat XLSB gewählt worden, auch in Hinsicht auf die Dateigröße.
Nun, die Mappe enthält zwei rudimentäre Makros.
Erstens, sortieren nach Projekt ID
Sub sortieren()
' Sortieren
ActiveWorkbook.Worksheets("Gesamtuebersicht").ListObjects("Gesamtuebersicht"). _
Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Gesamtuebersicht").ListObjects("Gesamtuebersicht"). _
Sort.SortFields.Add2 Key:=Range( _
"Gesamtuebersicht[[#Headers],[#Data],[Proj. Nr.]]"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortTextAsNumbers
With ActiveWorkbook.Worksheets("Gesamtuebersicht").ListObjects( _
"Gesamtuebersicht").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Zweitens neue Zeilen hinzufügen.
Sub zeilen_hinzufuegen()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim lAnzahl As String
Dim i As Long
Anf:
lAnzahl = InputBox("Anzahl der hinzuzufügenden Zeilen", , 1)
'Prüfen ob eine Zahl eingegeben wurde
If IsNumeric(lAnzahl) Then
For i = 1 To CLng(lAnzahl)
'selektiert in Spalte A den höchsten Wert
Dim rX As Excel.Range
Dim rY As Excel.Range
Dim lngMax As Double
For Each rX In Range("A2:A9999")
If rX = Application.WorksheetFunction.Max(Range("A2:A9999")) Then
Set rY = rX
Exit For
End If
Next
If Not rY Is Nothing Then
rY.Select
End If
Set rX = Nothing
Set rY = Nothing
ActiveCell.Offset(1, 0).EntireRow.Select
' Wählt Zeile unter aktiver Zelle vollständig aus.
Selection.Insert shift:=x1Down
' Fügt eine neue Zeile ein.
Next i
Else
MsgBox "Bitte eine Zahl eingeben !", vbInformation
GoTo Anf
End If
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Call Calculate
End Sub
Nun zum Problem, bei fortschreitender Bearbeitung werden leere Zellen mit Daten hinterlegt. Diese Daten sind aber nicht sichtbar - führen allerdings dazu, dass alle Zellen (Spalten und Zeilen) angezeigt werden (sofern nicht ausgeblendet). Das Ganze wiederum führt dazu, dass die Dateigröße einfach exorbitant steigt und Ladezeiten entsprechend in die Änonen gehen. Die Zeilen und Spalten können auch nicht einfach entfernt werden, sondern müssen mit einem externen Tool bereinigt werden.Jetzt habe ich keinen Ansatzpunkt mehr, woran das Ganze liegen könnte. Kann es mit dem Makro "Zeilen Hinzfügen" und Fehleingaben zusammenhängen? Oder ist irgendwas grds. beim Makro falsch? Gibt es vielleicht eine Idee zur Lösung?
Falls notwendig, kann ich auch eine Beispielmappe hinzufügen, müsste aber erstmal die ganzen Daten daraus löschen.
Herzlichen Dank im Voraus!
Viele Grüße
Dema