Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1848to1852
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Formel in neuem Tab öffnen

Formel in neuem Tab öffnen
30.09.2021 14:51:20
Azat
Hallo,
ich hab folgende VBA die ich bereits durch den Support dieses Forums erhalten habe versucht anzupassen.
Ich wollte die Anweisung des VBA's in einem anderen Tab öffnen, also nicht in dem selben Blatt.
Die Daten kommen also von "Tabelle2", das Ergebnis in "Berechnung".

Sub test()
Sheets("Tabelle2").Select
Dim Zelle As Range
Dim ZelleAlt As Range
Dim Zeile As Long
With Range("A:T")
Set Zelle = Sheets("Berechnung").Select.Find(what:=Range("A1").Value, lookat:=xlWhole, LookIn:=xlValues)
If Not Zelle Is Nothing Then
Set ZelleAlt = Zelle.UsedRange.Columns(5).Resize(, 3).Offset(1, 0).Clear
Zeile = 2
Do
Zelle.Offset(1 - Zelle.Row, -1).Copy Cells(Zeile, 5)
Zelle.Offset(-1, -1).Resize(4, 3).Copy Cells(Zeile + 1, 5)
Zeile = Zeile + 6
Set Zelle = .FindNext(Zelle)
Loop Until Zelle.Address = ZelleAlt.Address
End If
End With
End Sub
Kann Jemand helfen, meine Lösung scheint nicht ganz zu funktionieren.
Lg Azat

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formel in neuem Tab öffnen
01.10.2021 01:25:47
Daniel
ich greif mal einfach was raus:
Set Zelle = Sheets("Berechnung").Select.Find(what:=Range("A1").Value, lookat:=xlWhole, LookIn:=xlValues)
das Select hat hier nichts zu suchen. Du musst an dieser stelle den Zellbereich angeben, der auf dem Blatt Berechnung durchsucht werden soll.
Also Range("A:T") oder sowas in der Art anstelle von Select.
Set ZelleAlt = Zelle.UsedRange.Columns(5).Resize(, 3).Offset(1, 0).Clear
kompletter Unsinn.
Was willst du hier machen?
du kannst entweder einen Zellbereich einer Variablen zuweisen, dann muss das .Clear Weg oder du kannst mit dem Zellbereich eine Aktion durchfüren (das .Clear), dann muss das Set ZelleAlt = weg
du kannst aber immer nur eines von beiden in einer Programmzeile machen.
das UsedRange hat da nichts verloren. UsedRange wird immer nur an Tabellenblatt angehängt und ist der Zellbereich, der in diesem Blatt mit Daten oder Formaten belegt ist.
Wenn du in der Folge das ZelleAlt mit dem Zelle vergleichst um festzustellen, wann du die Schleife abbrechen musst, musst du natürlich Zelle unverändert an ZelleAlt übergeben. Wenn du den Zellbereich noch veränderst mit Resize und Offset, wird der Vergleich der Adressen niemals ein WAHR ergeben
also ein bisschen mitdenken solltest du beim Programmieren schon.
die Fehler haben jetzt nicht unbedingt viel mit Programmierwissen zu tun, sondern mehr mit der Fragestellung, was mache ich hier und warum mache ich das.
Gruß Daniel
Anzeige

67 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige