Ich versuche ein Übersichtsblatt zu erstellen, in dem 46 Datenzeilen über 7 Spalten verteilt sind. Also werde ich die Daten von 46 Blättern ziehen und es wird 7 verschiedene Datenpunkte geben.Excel-VBA-Code zum Auffüllen des Übersichtsfensters mit der Formel zum Verknüpfen von Zellen
Kann ich die Offset-Funktion verwenden, um diesen Code zu vereinfachen, z.
Sub AutoFillSheetNames()
Dim ActRng As Range
Dim ActWsName As String
Dim ActAddress As String
Dim Ws As Worksheet
On Error Resume Next
Set ActRng = Application.ActiveCell
ActWsName = Application.ActiveSheet.Name
ActAddress = ActRng.Address(False, False)
Application.ScreenUpdating = False
xIndex = 0
For Each Ws In Application.Worksheets
If Ws.Name <> ActWsName Then
ActRng.Offset(xIndex, 0).Value = "='" & Ws.Name & "'!" & ActAddress
xIndex = xIndex + 1
End If
Next
Application.ScreenUpdating = True
End Sub
Ich mag die tatsächlichen Zellen verknüpfen, so dass sie automatisch und VBA benötigt wird, um aktualisieren, weil es für viele verschiedene Excel-Dateien mit unterschiedlichen tabnames erfolgen. Der hier angegebene Code funktioniert, wenn ich z. B. die Zelle F2 im Übersichtsblatt auf dem ersten Blatt mit 48 Blatt mit F2 verknüpfe und dann die Formel für die restlichen 47 Zellen korrekt in F48 eingabe. Wenn ich jedoch die Zelle H2 im Übersichtsblatt mit G7 auf dem ersten Blatt verknüpfen möchte, was soll ich im obigen Code ändern?
Seitliche Anmerkung: Ich empfehle kaum, 'On Error Resume Next' zu verwenden, ohne eine ordnungsgemäße Fehlerbehandlung zu verwenden. Auf diese Weise werden Fehlermeldungen nur stummgeschaltet, aber die Fehler sind immer noch vorhanden und Sie sehen nicht, was schief läuft. –
Frage 1) Warum haben Sie 47 Blätter? Bitte beachten Sie das Design der Arbeitsmappe, da dies die Codierung erheblich verbessern kann. Das heißt, Sie können alle Ihre Arbeitsblattnamen in ein Array und Schleife durch das Array – user1