[EXCEL 2007] Formular verknüpfen

kafi

Stammgast
Hallo zusammen

Habe in Excel 2007 in Tabelle 1 ein Formular erstellt mit Auswahlfelder und Berechnungen.
Alles funktioniert bestens.
Nun möchte ich das Ergebnis aus Zelle B10 in die Tabelle 2 führen und zwar so, dass bei jedem Ausfüllen des Formulars die Ergebnisse in Zelle B10 in der Tabelle 2 untereinander aufgelistet werden, sodass sie dort zusammengezählt werden können.
Besten Dank

Gruss kafi
 

Nebuk

PCtipp-Moderation
Teammitglied
Mir ist keine Formularfunktion in Excel bekannt. Könntest du das etwas genauer erklären, wenn du schreibst, du hättest ein Formular erstellt?

Zum zweiten Punkt. Verstehe ich das richtig, dass du das Formular komplett ausfüllst und dir das Endresultat in der Tabelle2 im Feld B10 anzeigen soll. Dann füllst du das gleiche Formular nochmals aus und das Resultat soll dir in B11 eingetragen werden. Nächster Durchlauf wäre dann in B12 etc.?

Sicher machbar wäre es mit einem VBA-Makro, da kannst du es zuerst in die B10 eintragen lassen und jeweils ein Feld nach unten "wandern".

Gruss Nebuk
 

kafi

Stammgast
Hallo Nebuk

Mit Punkt 2 liegst Du perfekt.
Jetzt sollte ich nur noch wissen, wie man ein solches VBA-Makro macht oder wie der Code aussehen sollte.
Gruss kafi
 

Xpert

Stammgast
Diesen Code bei Tabelle1 im VBA einfügen, dann müsste es gehen

Code:
Sub Worksheet_Change(ByVal Target As Range)

    If Target.Address = "$B$10" Then

        ScreenUpdating = False

        ActiveCell.Offset(-1, 0).Select
        ActiveCell.Copy
        ActiveCell.Offset(1, 0).Select

        Homecell = ActiveCell.Address
        Sheets("Tabelle2").Activate
        Sheets("Tabelle2").Range("A1").Activate

            Do While ActiveCell <> Empty
                ActiveCell.Offset(1, 0).Select
            Loop
  
    
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

        Sheets("Tabelle1").Select
        Range(Homecell).Activate
        Application.CutCopyMode = False
        ScreenUpdating = True

    End If
    
End Sub

Allenfalls müsstes du noch schauen, dass Zwischenresultate das Makro noch nicht auslösen. Da ich dein Arbeitsblatt nicht genau genug kenne, kann ich dir hier noch nicht helfen.

oder du macht einen Button, der das Resultat nach hinten schreibt, sobald du fertig mit der Berechnung bist z.B.

Code:
Private Sub CommandButton1_Click()

ScreenUpdating = False
Sheets("Tabelle1").Range("B10").Select

ActiveCell.Copy
ActiveCell.Offset(1, 0).Select

Homecell = ActiveCell.Address
Sheets("Tabelle2").Activate
Sheets("Tabelle2").Range("A1").Activate

  Do While ActiveCell <> Empty
     ActiveCell.Offset(1, 0).Select
  Loop
  
    
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
 :=False, Transpose:=False

Sheets("Tabelle1").Select
Range(Homecell).Activate
Application.CutCopyMode = False
ScreenUpdating = True

    
End Sub

Dann kannst du ja die Summe von der ganzen Spalte A der Tabelle 2 z.B. in B1 in Tabelle 2 anzeigen lassen.

um die Resultate in Tabelle 2 zu löschen und neu anzufangen, könntest du einen zweiten Button machen, der die Resultate in Tabelle 2 löscht. Ich würde den z.B. "Zurücksetzen" benennen.

hier ein Beispiel, welches Inhalte von A1 bis A100 löscht:

Code:
Private Sub CommandButton2_Click()

ScreenUpdating = False

Sheets("Tabelle2").Range("A1:A100").ClearContents
Sheets("Tabelle1").Activate
Range("B11").Activate
ScreenUpdating = True

End Sub
 
Zuletzt bearbeitet:

kafi

Stammgast
Hallo Xpert

Besten Dank für den VBA-Code.
Da ich kein VBA-Spezialist bin, wäre ich froh, um eine kleine Anleitung.
Auf welcher Zelle erstelle ich wie das VBA?
Ich habe Dir noch ein Bild von der Tabelle angehängt. Die errechneten Zahlen aus Zelle C12 (sorry, schrieb vorher B10) soll nun in Tabelle 2 untereinander aufgelistet werden.
Die orangen Zellen können mittels Auswahl definiert werden, die gelben sind Formeln.
Besten Dank
kafi
 

Anhänge

  • Tabelle1.jpg
    Tabelle1.jpg
    71,3 KB · Aufrufe: 19
Zuletzt bearbeitet:

Nebuk

PCtipp-Moderation
Teammitglied
Du brauchst den Code in keine Zelle zu schreiben. Dazu hast du den Visual Basic (for Applications) Editor. Diesen kannst du aber in Excel (oder Word, oder Access...) aufrufen.

Im Internet gibt es gibt es zahlreiche Tutorials zu diesem Thema: Du kannst dir zum Beispiel dieses mal anschauen. Ich habe es mal kurz überflogen und fand es nicht schlecht.
Ansonsten einfach mal googlen z.B. nach "vba "excel 2007" tutorial".

Gruss
Nebuk
 

Xpert

Stammgast
Hallo Xpert

Besten Dank für den VBA-Code.
Da ich kein VBA-Spezialist bin, wäre ich froh, um eine kleine Anleitung.
Auf welcher Zelle erstelle ich wie das VBA?
Ich habe Dir noch ein Bild von der Tabelle angehängt. Die errechneten Zahlen aus Zelle C12 (sorry, schrieb vorher B10) soll nun in Tabelle 2 untereinander aufgelistet werden.
Die orangen Zellen können mittels Auswahl definiert werden, die gelben sind Formeln.
Besten Dank
kafi

Da du nicht VBA erfahren bist, würde ich dir meine Button Lösung vorschlagen:

1. Öffne das betroffene Arbeitsblatt in Excel
2. Wähle den Punkt "Entwicklertools" in der Mulitfunktionsleiste (sollte dieses Register nicht zu sehen sein, musst du diese einblenden lassen: Gehe in die Excel-Optionen, dort unter "Häufig verwendet" den Hacken bei "Entwicklerregisterkarte in der Mulitfunktionsleiste anzeigen" anwählen.)

3. Klicke unter Entwicklertools "Einfügen" an und dort "button einfügen"; jetzt wechselt die Maus zu einem Kreuz, womit du den Button auf das Blatt "zeichnen" (klick links, nach unten ziehen, los lassen) kannst. -> Mach das dort wo du den hin haben willst.
4. Wählen den soeben erstellen button an in dem du in einmal anklickst (rechts klick), so dass er markiert ist.
5. in der Menuleiste klickst du auf "Code anzeigen"
6. Es öffnet sich ein Fenster mit:

Code:
Sub Schaltfläche1_KlickenSieAuf()

End Sub

7. Füge dort folgenden Code ein:

Code:
ScreenUpdating = False
Sheets("Tabelle1").Range("B10").Select

ActiveCell.Copy
ActiveCell.Offset(1, 0).Select

Homecell = ActiveCell.Address
Sheets("Tabelle2").Activate
Sheets("Tabelle2").Range("A1").Activate

  Do While ActiveCell <> Empty
     ActiveCell.Offset(1, 0).Select
  Loop
  
    
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
 :=False, Transpose:=False

Sheets("Tabelle1").Select
Range(Homecell).Activate
Application.CutCopyMode = False
ScreenUpdating = True

das sieht dann so aus:

Code:
Sub Schaltfläche1_KlickenSieAuf()
ScreenUpdating = False
Sheets("Tabelle1").Range("C12").Select

ActiveCell.Copy
ActiveCell.Offset(1, 0).Select

Homecell = ActiveCell.Address
Sheets("Tabelle2").Activate
Sheets("Tabelle2").Range("A1").Activate

  Do While ActiveCell <> Empty
     ActiveCell.Offset(1, 0).Select
  Loop
  
    
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
 :=False, Transpose:=False

Sheets("Tabelle1").Select
Range(Homecell).Activate
Application.CutCopyMode = False
ScreenUpdating = True

End Sub

8. Klicke auf Speichern und Speichere die Datei als "*.xlsm" (wird benötigt, damit es das Makro speichert

9. Jetzt kannst du den VBA Editor schliessen und zurück auf den Excel-Blatt gehen.

Test: Jedes Mal wenn du auf den Button drückst, wird der Betrag aus C12 auf Tabelle 2 nach hinten geschrieben, wobei neue Einträge jeweils eine Zeile darunter aufgelistet werden


Die Summe kannst du dier ja in B1 auf Tabelle 2 anzeigen lassen: =Summe(A1:A100)

Möchtest du mit einer neuen Summenrechnung beginnen, musst du die Resultat auf Tabelle 2 Spalte A selber manuell löschen oder du machst einen zweiten Button, welcher die Inhalte der Spalte A automatisch löscht. Hier der Code für den zweiten Button (vorgehen analog oben):

Code:
Sub Schaltfläche2_KlickenSieAuf()

ScreenUpdating = False

Sheets("Tabelle2").Range("A1:A100").ClearContents
Sheets("Tabelle1").Activate
Range("B11").Activate
ScreenUpdating = True

End Sub

Hoffe konnte dir helfen.
 
Zuletzt bearbeitet:

kafi

Stammgast
Hallo Xpert

Wou, das ist super, klappt hervorragend. Besten Dank für Deine super Anleitung.

Gibt es auch so einen Code, wenn ich auf die Schaltfläche "Preis übertragen" (Preis wird nun in die Tabelle 2 geschrieben) klicke, die orangen Flächen wieder leer sind?

Gruss kafi
 

Xpert

Stammgast
Schreib doch kurz welche Zellen du geleert haben möchtest. Ich vermute: C4/C6/C10/C14/C16 und C18, richtig?

Falls ja, kannst du im Code von Schaltfläche 1 einfach folgendes am Schluss noch einfügen:

Code:
   Sheets("Tabelle1").Range("C4, C6, C10, C14, C16, C18").ClearContents

Achtung! "End Sub" kommt immer am Schluss, also musst du den neuen Code zw. der letzten Codezeile der Schaltfläche 1 (ScreenUpdating = True) und dem Text "End Sub" einfügen

sieht dann so aus:

Code:
Sub Schaltfläche1_KlickenSieAuf()
ScreenUpdating = False
Sheets("Tabelle1").Range("C12").Select

ActiveCell.Copy
ActiveCell.Offset(1, 0).Select

Homecell = ActiveCell.Address
Sheets("Tabelle2").Activate
Sheets("Tabelle2").Range("A1").Activate

  Do While ActiveCell <> Empty
     ActiveCell.Offset(1, 0).Select
  Loop
  
    
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
 :=False, Transpose:=False

Sheets("Tabelle1").Select
Range(Homecell).Activate
Application.CutCopyMode = False
ScreenUpdating = True

Sheets("Tabelle1").Range("C4,C6, C10, C14, C16, C18").ClearContents

End Sub
 
Zuletzt bearbeitet:

kafi

Stammgast
Hey super

Besten Dank.
Habe diesen Code nun in eine neue Schaltfläche eingebaut und kann nun nach belieben schalten und walten.

Gruss und frohe Festtage
kafi
 
Oben