Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

VBA Tabelle1 FeldA1 gleich Tabelle2 A1, abspeichern





Frage

Guten Morgen allerseits, für die meisten wahrscheinlich ein Klax. Ich brech mir allerdings einen ab. Ich hätte gern per VBA dass das was in Tab. 1 in Feld A1 steht automatisch in Tab.2 in Feld A1 geschrieben wird. Ich möchte hier ungerne mit der Formel ist gleich arbeiten, da die ja beim überschreiben weg ist. 2. Gibt es eine möglichkeit wenn ich einen CommandButton betätige, das nur meine Aktuelles Tabellenblatt in einen Ordner (z.B. Eigenen Datein/AR) gespeichert wird unter dem namen, der im aktuellen Tabellenblatt in Feld A10 steht und dass sich die Felder B10, B15, und C15 danach automatisch löschen. Das wäre super. Viele Grüße an alle. boris

Antwort 1 von coros

Hallo Boris,

leider hast DU nicht geschrieben, ob es immer ein neuer Dateiname sein soll. Daher habe ich erst mal ein ganz einfaches Makro erstellt.
Kopiere das Makro in ein StandardModul und starte es.

Option Explicit

Sub TB_kopieren()
Application.ScreenUpdating = False
Sheets("Tabelle1").Copy
ActiveWorkbook.SaveAs Filename:="C:\Eigene Dateien\Dateiname.xls"
ActiveWindow.Close
Range("A10, B10, B15, C15").ClearContents
End Sub


Hier wird das aktuelle Tabellenblatt in einer neuen Datei unter "C:\Eigene Dateien\" unter dem Namen "Dateiname.xls" abgespeichert. Danach werden die Zellen A10, B10, B15 und C15 geleeret.


MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von bokap1975

hi Oliver,

danke für deine schnelle antwort. werde dein Makro gleich sofort ausprobieren. Allerdings soll das Feld A10 tatsächlich eine fortlaufende Nummer sein, die sich am besten sogar selbst erstellt. Z.B. beginndend mit AR7-15000.

Danke für deine Hilfe

grüße
boris

Antwort 3 von coros

Hallo Boris,

sorry, hatte ich überlesen das mit dem Dateinamen. Dann sieht das mit dem Makro wie folgt aus.

Option Explicit

Sub TB_kopieren()
Application.ScreenUpdating = False
Sheets("Tabelle1").Copy
ActiveWorkbook.SaveAs Filename:="C:\Eigene Dateien\" & Range("A10") & ".xls"
ActiveWindow.Close
Range("A10, B10, B15, C15").ClearContents
End Sub



Hier wird der Dateiname aus der Zelle A10 herangezogen.

Zu der laufenden Nummer schau mal auf meiner HP in der Rubrik Beispieldateien und dort dann in dem Beispiel 90 nach. Dort stelle ich dazu eine Beispieldatei zur Verfügung, die Dir sicherlich helfen wird.

Bei Fragen melde Dich.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 4 von Bokap1975

Hi Oliver,

danke läuft super.

Auch wenns peinlich ist. Kannst Du mir zur ersten Frage noch kurz ein VBA schreiben. Also eine eine VBA Lösung für die Normale Formel z.B A1 ist gleich A10.

Viele Grüße
Boris

Antwort 5 von coros

Hallo Boris,

sorry, verstehe nicht was Du möchtest. Auch aus AW1 geht das nicht richtig hervor. Was bedeutet bei Dir automatisch?
Bitte eine genauere Beschreibung.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 6 von Bokap1975

Sorry,

Ok neuer Versuch.

Ich habe zwei Tabellenblätter mit verschiedenen Optionsbuttons und Preisangaben in beiden Tabellenblättern. Jetzt habe ich in Tabelle1 auf dem Feld I3 eine Prozent-Angabe (Rabatt) trägt man hier eine Zahl ein so errechnen sich meine Preise abzüglich dieses Rabattes. In Tabelle 2 hab ich ebenfalls eine Preiserrechnungsmöglichkeit und wieder mit einem Rabatt. Diese Rabattangabe soll hier automatisch die gleiche sein wie auf Tabelle1. Das hatte ich bislang wie folgt gelöst. In Tabelle2 auf dem Feld I3 auf das = Zeichen gedrückt und dann auf Tabelle1 das Feld I3 markiert und bestätigt. Somit seht ja in Tabelle 2 (I3) das gleiche wie auf Tabelle 1 (I3) und das soll auch so sein. Nur überschreibe ich jetzt händisch den Rabatt in Tabelle 2 so ist ja mein Bezug (Formel) weg. Und da dachte ich man könne das mit VBA lösen, dass da immer das drinn steht wie in Tabelle 1.

Hoffe ich hab das einigermaßen Verständlich geschrieben.

Noch kurz was zum vorherigen Code. Der klappt ja gut allerdings kann ich meinen Speicherort innerhalb des Code nicht ändern. z. B. T:\Boris\Excel oder sowas. Sagt immer fehler im Debuggen und schreibt wieder den alten Speicherort Eigene Dateien hin.

Viele Grüße
Boris

Antwort 7 von coros

Hallo Boris,

kopiere nachfolgenden Code in das VBA-Projekt des tabellenblattes "Tabelle1" und "Tabelle2". Das bewirkt, dass egal ob in Tabelle 1 oder Tabelle 2 in Zelle I3 etwas eingetragen wird, immer der Wert aus Tabelle1, Zelle I3 erscheint.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Address = "$I$3" Then Sheets("Tabelle2").Range("I3") = Sheets("Tabelle1").Range("I3")
End Sub


Zu dem 2. Problem: Poste doch bitte mal den Code, wie er bei Dir aussieht, wenn Du den Speicherort verändert hast.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 8 von bokap1975

Hi Oliver,

in einer leeren Beispiel-Datei funktioniert das wunderbar. Ich hab allerdings in meinem Tabellenblatt1 und Tabellenblatt2 schon einige Makros drin. (unten gleich ein Beispiel) und irgenwie scheinen die sich nicht zu vertragen wenn ich zusätzlich Dein "Private Sub Worksheet_Change(ByVal Target As Range)" einfüge schmiert mir Excel ab.

Beispiel der bereits vorhandenen Makro. zusätzlich sind noch
ein private Sub calculate und ein paar commandButton und OptionButton drin.

Option Explicit
Sub Ranhaengen()
Dim zeile As Long
With ThisWorkbook.ActiveSheet
zeile = .Cells(.Rows.Count, 11).End(xlUp).Row
If zeile < 32 Then zeile = 32
If zeile = .Rows.Count - 1 Then
MsgBox ("Das Zeilenende wurde erreicht,die Daten wurden nicht kopiert !")
Else
.Cells(zeile, 11) = .Cells(26, 11)
.Cells(zeile, 12) = "Position " & zeile - 31
.Cells(26, 6) = "Position " & zeile - 31
.Cells(zeile + 1, 11) = Application.WorksheetFunction.Sum(.Range("K32:K" & zeile))
.Cells(zeile + 1, 12) = "Gesamt"
End If
End With
End Sub

2. Problem sende ich gleich.

Viele Grüße
Boris

Antwort 9 von bokap1975

Ich nochmal Kurz.

2. Problem hat sich erledigt mit deinem Neuen Code kann ich jetzt auch einen Anderen Speicherort wählen.

Danke hierfür. Läuft super

Grüße
Boris

Antwort 10 von coros

Hallo Boris,

das was Du da als Makro geschrieben hast, gehört nicht in das VBA Projekt eines tabellenblattes oder des VBA Projektes "DieseArbeitsmappe" sondern in ein StandardModul.

Für weitere Fehlerhilfe müsste man schon genau wissen, wass bei Dir wo steht. Am besten wäre es, wenn man die Datei sehen könnte. denn alles andere ist wie mit langen Stöcken im Nebel stochern.

Wenn ich mich jetzt nicht mehr melde, dann nicht, weil ich keinen Rat mehr weis oder keine Lust mehr habe, sondern viel mehr, weil ich jetzt von Berlin nach Magdeburg fahren muss, weil ich dort einen Termin mit einem Kunden habe um ihm sein Auftrag zu präsentieren. Daher werde ich dann erst wieder morgen hier tätig werden können.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 11 von bokap1975

Hi Oliver,

bin nicht so unter Zeitdruck und sowieso für jede Hilfe dankbar und wohl nicht in der Position ansprüche zu stellen.

Könnte dir eine abgespeckte version der Tabelle zukommen lassen. Sie hat eigentlich ca 50 Tabellen, aber nur 4 sind wirklich wichtig und in denen stehen auch die Makros.

Sag mir einfach auf welchem Weg ich sie schicken soll.

Viele Grüße, gute Geschäfte
Boris

Antwort 12 von coros

Hallo Boris,

stelle Deine Datei einfach bei z.B. www.netupload.de ein. Dann kann man sich die Datei runterladen und nachsehen, wo das Problem liegt.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 13 von bokap1975

Hi Oliver,

hab die Datei mal hier eingestellt. Bin gespannt, wie vermurkst das Ding ist. Viele Grüße, Boris.

http://www.netupload.de/detail.php?img= d5140a39fe18a1f15d15da89b691de03.xls


  • *Threadedit* 08:12:59
    Admininfo: achte bei Links bitte auf unsere Formatierungshilfe oder nutze das SNTool


  • Antwort 14 von coros

    Hallo Boris,

    Dein Link funktioniert nicht. Bitte lade die Datei nochmal bei Netupload.de hoch und poste den Link hier. Eventuell testest Du vorher selber den Link mal, bevor Du ihn dann hier hineinsetzt.

    MfG,
    Oliver
    Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
    ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

    Antwort 15 von bokap1975

    Hallo Oliver,

    habs nochmal neu gemacht. Fuktioniert jetzt.

    Grüße Boris

    http://www.netupload.de/detail.php?img=291157a055e88bf1242578c0cdf12fdc.xls

    Antwort 16 von coros

    Hallo Boris,

    sorry, aber ich kann weder im VBA-Projekt des Tabellenblatt "Tabelle1" noch im Tabellenblatt "Tabelle2" ein VBA-Code finden, der sich mit irgend etwas in die Quere kommt, so wie Du in AW8 geschrieben hattest, und auf das ich in AW10 geantwortet habe, dass man die Datei benötigt.

    Was ist denn nun das Problem?

    MfG,
    Oliver
    Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
    ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

    Antwort 17 von bokap1975

    Hi Oliver,

    Sorry, ich hatte in der Beschreibung die Namen Tabelle1 und Tabelle2 Verwendet um keine Verwirrung zu erzeugen.

    In meiner tatsächlichen Arbeitsmappe handelt es sich um Deckblatt und Deckblatt (2)

    hier sind die Codes die sich nicht mit deinem Vertragen.

    Grüße
    Boris

    Antwort 18 von coros

    Hallo Boris,

    das ganze hängt sich an Deinen vielen Abfragen im Calculate-Ereignis auf. Wobei ich sowieso nicht verstehe, warum Du ein Calculate-Ereignis und nicht das Change-Ereignis benutzt.

    Kopiere den nachfolgenden Code in das Tabellenblatt "Deckblatt "

    Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Target.Cells.Address = "$I$3" Then Sheets("Deckblatt (2)").Range("I2") = Sheets("Deckblatt").Range("I3")
    Application.EnableEvents = True
    End Sub


    Den nächsten Code kopierst Du in das Tabellenblatt "Deckblatt (2)"

    Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Target.Cells.Address = "$I$2" Then Sheets("Deckblatt (2)").Range("I2") = Sheets("Deckblatt").Range("I3")
    Application.EnableEvents = True
    End Sub
    


    Dann setze bitte am Anfang des Calculate-Ereignisses im Blatt "Deckblatt" den Befehl

    Application.EnableEvents = False


    und am Ende den Befehl

    Application.EnableEvents = True
    



    Das bewirkt, dass sich die Code nicht gegenseitig ständig neu aufrufen.


    MfG,
    Oliver
    Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
    ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

    Antwort 19 von bokap1975

    Hi Oliver,

    Danke erstmal für deine Mühe. Werde es gleich ausprobieren.

    Ich benutze Calculate-Ereignisse weil verschiedene Comboboxen eingeblendet werden sollen wenn der Inhalt einer bestimmten Zelle z. B. 1 ist. Dieser Wert 1 erscheint z. B duch anklicken eines Kontroll-Kästchens. Wenn ich das mit Change mache passiert gar nichts außer ich gebe in diese Zelle mit der Tastatur die 1 ein und bestätige diese mit enter. Hatte ich schon ausprobiert.

    Viele Grüße Boris

    Antwort 20 von bokap1975

    Hi Oliver,

    habe es gerade ausprobiert und es funktioniert super.

    Vielen Dank für Deine Hilfe und die Geduld.

    Viele Grüße
    Boris

    Antwort 21 von bokap1975

    Hi Oliver.

    Hab mich zu früh gefreut. Funktioniert doch nicht ganz.

    Also wie beabsichtigt wird das Feld I2 in der Tabelle 2 (Deckblatt 2) überschrieben.

    Allerdings werden alle Calculate-Funktionen unterbrochen. 1 Mal lassen sich die CommandBoxen noch einblenden aber bei wiederholtem anklicken der Kontrollkästchen schlägt die Funktion fehl. Dann tut sich gar nichts mehr. Kein einblenden kein ausblenden. Und auch das Begrüßungs-Tabellenblatt wo ja der Code in diese Arbeitsmappe steht wird nicht mehr angezeigt. Schade- Bis hierhin gings gut.

    Viele Grüße Boris

    Antwort 22 von coros

    Hallo Boris,

    Du bist Dir ganz sicher, dass Du am Ende des Calculate-Ereignisses den Befehl

    Application.EnableEvents = True


    eingetragen hast? Das was Du schreibst, kann ich bei mir nicht nachvollziehen. Wobei ich auch nicht weiß, was wann eingeblendet werden soll. Aber wenn ich irgendwo etwas eingebe oder anklicke, wird das Calculate-Ereignis abgearbeitet.
    Das was Du schreibst könnte daraufhindeuten, dass Du obigen Befehl nicht richtig eingetragen hast

    MfG,
    Oliver
    Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
    ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat..

    Ich möchte kostenlos eine Frage an die Mitglieder stellen:


    Ähnliche Themen:


    Suche in allen vorhandenen Beiträgen: