Ich frage demütig um Hilfe, diesen Code zu ändern. Ich habe eine Zugriffsdatenbank erstellt, die das Informations-Repository für ungefähr 30 Versionen einer Excel-Tabelle ist, die zum Abrufen der aktuellsten Informationen für die Arbeitsmappe verwendet werden kann. Nachdem die Arbeitsmappe die Informationen in den Hilfeblättern aktualisiert hat und der Benutzer die entsprechenden Felder eingibt, müssen viele ungenutzte Spalten und Zeilen entfernt werden. Jede der Hilfsbögen zeichnet dynamisch Daten unter Verwendung von Formeln; Daher sind die Zellen nicht wirklich leer. Ich fand diesen Code, der erstaunlich gut funktioniert, um leere Zellen zu entfernen, aber ich kann nicht herausfinden, wie ich ihn modifizieren soll, damit er die Spalten entfernt, in denen Formeln gespeichert sind, die nicht benutzt werden.Entfernen Sie leere (leere) Spalten Excel VBA
Sub RemoveBlankRowsColumns()
Dim rng As Range
Dim rngDelete As Range
Dim RowCount As Long, ColCount As Long
Dim EmptyTest As Boolean, StopAtData As Boolean
Dim RowDeleteCount As Long, ColDeleteCount As Long
Dim x As Long
Dim UserAnswer As Variant
'Analyze the UsedRange
Set rng = ActiveSheet.UsedRange
rng.Select
RowCount = rng.Rows.Count
ColCount = rng.Columns.Count
DeleteCount = 0
'Determine which cells to delete
UserAnswer = MsgBox("Do you want to delete only the empty rows & columns " & _
"outside of your data?" & vbNewLine & vbNewLine & "Current Used Range is " & rng.Address, vbYesNoCancel)
If UserAnswer = vbCancel Then
Exit Sub
ElseIf UserAnswer = vbYes Then
StopAtData = True
End If
'Optimize Code
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
'Loop Through Rows & Accumulate Rows to Delete
For x = RowCount To 1 Step -1
'Is Row Not Empty?
If Application.WorksheetFunction.CountBlank(rng.Rows(x)) <> 0 Then
If StopAtData = True Then Exit For
Else
If rngDelete Is Nothing Then Set rngDelete = rng.Rows(x)
Set rngDelete = Union(rngDelete, rng.Rows(x))
RowDeleteCount = RowDeleteCount + 1
End If
Next x
'Delete Rows (if necessary)
If Not rngDelete Is Nothing Then
rngDelete.EntireRow.Delete Shift:=xlUp
Set rngDelete = Nothing
End If
'Loop Through Columns & Accumulate Columns to Delete
For x = ColCount To 1 Step -1
'Is Column Not Empty?
If Application.WorksheetFunction.CountBlank(rng.Columns(x)) <> 0 Then
If StopAtData = True Then Exit For
Else
If rngDelete Is Nothing Then Set rngDelete = rng.Columns(x)
Set rngDelete = Union(rngDelete, rng.Columns(x))
ColDeleteCount = ColDeleteCount + 1
End If
Next x
'Delete Columns (if necessary)
If Not rngDelete Is Nothing Then
rngDelete.Select
rngDelete.EntireColumn.Delete
End If
'Refresh UsedRange (if necessary)
If RowDeleteCount + ColDeleteCount > 0 Then
ActiveSheet.UsedRange
Else
MsgBox "No blank rows or columns were found!", vbInformation, "No Blanks Found"
End If
ExitMacro:
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
Application.ScreenUpdating = True
rng.Cells(1, 1).Select
End Sub
im Screenshot von Kalkulationstabelle Zellen A1-T221 ist aktiv und wird in dem Arbeitsbuch verwendet wird;
- Zeilen 222: 5000 haben Formeln, die in dieser Arbeitsmappe nicht verwandt werden.
- Spalten T1: EP5000 enthält Formeln, die in dieser Arbeitsmappe nicht verwendet werden.
Wieder- Vielen Dank im Voraus für Ihre Hilfe bei der Suche nach einer Lösung für diese Änderung benötigen.
Ich schätze die Bemühungen eine andere Lösung für mein Problem vorzuschlagen. Jedes Mal, wenn ich den Code ausführe, reagiert mein Excel nicht mehr. Ich nahm an, dass es einfach wegen der großen Menge von Prozessen war, die abgeschlossen wurden; Nach 30 Minuten reagierte es jedoch immer noch nicht. – mbass438
@ mbass438 Versuchen Sie den Code in meinem ** EDIT # 1 ** –
@ garys-Student EDIT # 1 definitiv viel schneller verarbeitet. Es löschte effektiv alle Spalten in der Tabelle, die nichts in den Zellen gespeichert hatte (leer); Ich brauche jedoch dieses VBA-Skript, um alle Spalten zu löschen, die keinen Wert in der Zelle haben (siehe Screenshot der Tabelle): Col Q und sein Helfer Col R werden verwendet, aber Col U (Helfer V) ist Wenn sie nicht als Ergebnis des Benutzereintrags verwendet werden, haben sie immer noch Formeln in jeder der Zellen (1: 5000), um Daten zu ziehen, wenn der Benutzer geeignete Werte eingibt. Wie lösche ich auch unbenutzte Zellen mit Formeln? – mbass438