Makro ausführen auf 2. Tabellenblatt
Hallo, hier meine Anfrage:
Wie ist ein Makro aufzubauen, das vom aktuellen Tabbellenblatt auf einem ausgeblendetem Tabellenblatt eine Zielwertsuche durchführt, dessen Ergebnisse auf dem aktuellen Tabellenblatt gebraucht werden?
danke im Voraus
Antwort schreiben
Antwort 1 von Beverly vom 30.01.2020, 18:45 Options
Hi Peter,
sprich das ausgeblendete Tabellenblatt mit Namen an
Sub suchen()
Dim raZelle As Range
Set raZelle = Worksheets("Ausgeblendet").Columns("A").Find("Suchbegriff", lookat:=xlWhole)
MsgBox raZelle.Address
End Sub
Bis später,
Karin
Antwort 2 von hpeter vom 31.01.2020, 10:01 Options
Ich danke Karin für die schnelle Antwort. Da ich Anfänger bin, habe ich mich nicht richtig ausgedrückt. Ich möchte vom Tabellenblatt "Eingaben" im Tabellenblatt "Hydr." die folgende Zielwertsuche durchführen, ohne daß ich auf das Tabellenblatt wechseln muß.
Mit dem Recorder habe ich es auch versucht, aber es funktioniert nicht. (Das Makro selbst ist aber OK)
Sheets("Hydr.").Select
Range("D25").Select
Range("D25").GoalSeek Goal:=0, ChangingCell:=Range("D26")
Range("D55").Select
Range("D55").GoalSeek Goal:=0, ChangingCell:=Range("D56")
Sheets("Eingaben").Select
Range("F53").Select
Antwort 3 von Beverly vom 31.01.2020, 17:11 Options
Hi Peter,
ich kann es leider nicht prüfen, da ich deinen Tabellenaufbau und deine Funktion nicht kenne, aber versuche es mal so
Worksheets("Hydr.").Range("D25").GoalSeek _
Goal:=0, ChangingCell:=Worksheets("Hydr.").Range("D26")
Worksheets("Hydr.").Range("D55").GoalSeek _
Goal:=0, ChangingCell:=Worksheets("Hydr.").Range("D56")
Bis später,
Karin
Antwort 4 von hpeter vom 06.02.2020, 17:13 Options
Hallo Karin,
leider habe ich immer noch kein Erfolg
Laufzeitfehler '9' / Index außerhalb d. gültigen Bereichs
Worksheets("Hydr.").Range("F24").GoalSeek _
Goal:=0, ChangingCell:=Worksheets("Hydr.").Range("F25")
bei Veränderung kam (Syntaxfehler)
Worksheets("Hydraulik").Range("H24").Select
Worksheets("Hydraulik").Range("H24").GoalSeek Goal:=0,
ChangingCell:=Worksheets("Hydraulik").Range("H25")
Wie kann ich eine automatischen Makrolauf erreichen, wenn der Wert einer Zelle 0,001 übersteigt?
Mein Versuch, aber auch fehlerhaft
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D27") > 0.001 Then
Call ZW1
End If
End Sub
Sub ZW1()
Range("D24").Select
Range("D24").GoalSeek Goal:=0, ChangingCell:=Range("D25")
End Sub
Vielen Dank im Voraus
Antwort 5 von hpeter vom 06.02.2020, 17:52 Options
Worksheets("Hydraulik").Range("D24").GoalSeek _
Goal:=0, ChangingCell:=Worksheets("Hydraulik").Range("D25")
Hallo Karin, Dein Tipp war richtig, mein Fehler--ich hatte in den verschiedenen Varianten die Tabb-Blätter unterschiedlich benannt.
Evtl. hast Du noch den richtigen Tipp zum automatisieren.
Gruß
Hans-Peter
Antwort 6 von Beverly vom 06.02.2020, 18:35 Options
Hi Hans-Peter,
nur als Tipp: der "Laufzeitfehler '9' / Index außerhalb d. gültigen Bereichs" hat immer zur Ursache, dass ein angesprochenes Element nicht gefunden wird. In diesem Fall sollte man als erstes prüfen, ob die Objekte mit dem richtigen Namen angesprochen werden. Manchmal reicht schon ein Leerzeichen am Ende, welches man so beim Hinschauen nicht erkennt, und schon kann man sich "zu Tode" suchen, weil man nicht nachvollziehen kann, weshalb es nicht funktioniert.
Zur Automatisierung: ich nehme an, in D27 steht eine Formel? In diesem Fall kann man nicht das Worksheet_Change Ereignis für die Überwachung der Zelle mit der Formel verwenden, weil Change eine direkte Eingabe verlangt. Man hat dann aber zwei Möglichkeiten: entweder, man überwacht mit dem Worksheet_Change Ereignis diejenigen Zellen, die den Formelwert beeinflussen, oder man verwendet das Worksheet_Calculate Ereignis, weil ja im Falle einer Veränderung des Formelergebnisses eine Neuberechnung stattfindet.
Bis später,
Karin
Antwort 7 von hpeter vom 07.02.2020, 10:20 Options
Ich danke Dir, die Tipps waren richtig
Antwort 8 von H-Peter_T vom 11.02.2020, 14:01 Options
eine neue Anfrage: Werte in ein neues Blatt übertragen
Hallo Leute,
Ich möchte mit Eurer Hilfe erreichen, daß ein Tabellenblatt mit den Werten, Text (aus Wenn-Bedingung) und dem Blattformat in ein neues Tabellenblatt (in derselben Arbeitsmappe) gespeichert wird, wobei der Tabellenname aus einer Zelle (z.B. "E3") übernommen wird.
Da zur eigentlichen Berechnung ein Tabellenblatt sowie ein Datenblatt hinterlegt sind, darf keine Verknüpfung mehr vorhanden sein.
PS: Dank an Karin ( ich bin ein ganzes Stück weiter gekommen)
Antwort 9 von Beverly vom 11.02.2020, 17:39 Options
Hi Hans-Peter,
Sub kopieren()
Dim strName As String
strName = ActiveSheet.Range("E3")
On Error Resume Next
strName = Worksheets(strName).Name
If Err > 0 Then
ActiveSheet.Copy After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = Range("E3")
ActiveSheet.UsedRange.Copy
ActiveSheet.UsedRange.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Else
MsgBox "Es gibt schon ein Tabellenblatt " & strName
End If
Err.Clear
On Error GoTo 0
End Sub
Bis später,
Karin
Antwort 10 von h-petert vom 12.02.2020, 15:31 Options
Hallo Karin,
wieder etwas weiter. Das kopieren geht, jedoch unter dem selben Namen der Tabelle1 ("Eingabe"; "Eingabe(2)"; leider nimmt er das Makro (Kopieren) mit.
Auch wird das Makro zum löschen der alten Daten (wird beim Öffnen aktiviert) auf dem neuen Blatt aufgeführt, so das das Formblatt keine Daten mehr enthält.
Für weitere Hilfe dankbar
Hans-Peter