Microsoft Excel

Herbers Excel/VBA-Archiv

Makros für 3 Tabellen mit Dropdown und Button


Betrifft: Makros für 3 Tabellen mit Dropdown und Button
von: Bud
Geschrieben am: 14.09.2018 12:49:00

Hallo,

ich kenne nur ein paar Grundlagen von Excel.
Von VBA habe ich leider gar keine Ahnung.
Nun benötige ich allerdings ein 2-3 Makros und damit Hilfe.

Folgende Situation:

Ich möchte Übertragungsraten errechnen und speichern.
Dazu habe ich bereits zwei Zeilen in Tabelle1 (Titel "Rechner") angelegt.
In Zeile 2 befinden sich die Überschriften für die Spalten von A-J.
In Zeile 3 können dann die Daten eingetragen werden und die benötigten Ergebnisse werden durch Funktionen bereits errechnet. Die Zellen sind wie gewünscht formatiert.

In B2 habe ich ein Dropdown-Menu (Liste) eingefügt mit den Parametern "Abruf" und "Archivierung". Zusätzlich existiert ein Button "Speichern" in J4.

Zielstellung:

Der Benutzer soll bei Eingabe der Daten im Drop-Down (Zelle B3) auswählen müssen um welchen Typ es sich handelt, "Abruf" oder "Archivierung".
Bei Aktivierung des Buttons "Speichern" soll dann je nach Typ in Tabelle 2 (Abruf) oder Tabelle 3 (Archivierung) die ganze Eingabezeile (bzw. die Zellen A3 - J3), im selben Format und mit den selben Werten gespeichert werden. Die Funktionen müssen dabei nicht übernommen werden.

Die kopierten Angaben (Zeilen/Zellen) sollen in Zeile 2 der jeweiligen Tabelle eingefügt werden. Zuvor dorthin kopierte Angaben sollen um eine Zeile nach unten verschoben werden. Nach 5 Zeilen sollen zwei Zeilen leer gelassen werden (7 u. 8).

In Zeile 7 möchte ich einen Mittelwert der in Spalte J enthaltenen Werte ermitteln wobei leere Zellen ignoriert werden sollen. Zeile 8 bleibt als optischer Absatz leer.

Ab Zeile 9 soll die Verschiebung nach unten der (in Zeile 7 und 8 pausierten) älteren Datensätze fortgeführt werden. Die Liste soll insgesamt höchstens 50 Einträge erfassen. Ab dem 51. Eintrag soll dann ganz unten der älteste Eintrag gelöscht werden.

Am Ende möchte ich noch die Eingabezellen zurücksetzen.
Zellen zur Eingabe von Zahlenwerten haben bereits eine Funktion um bei leerem Inhalt mit 0 zu arbeiten ebenso wie Zellen mit Berechnungen welche bei 0-Angaben Fehler angeben würden. Die Zelle B1 stellt mit =Heute das Datum bereit.
Was beim DropDown Menu (B3) bei ClearContent passiert weiss ich nicht genau.

Ich hoffe ich habe meine Problemstellung mit Worten bildlich darstellen können.
Falls nicht lasst es mich bitte wissen.

Ich danke im Voraus für eure Zeit und Bemühungen,

Grüße
Bud

  

Betrifft: Edit:Makros für 3 Tabellen mit Dropdown und Button
von: Bud
Geschrieben am: 14.09.2018 15:04:52

Edit:

Ich möchte noch darauf hinweisen, dass ich bereits selbst versucht habe ein Makro zu kreieren.
Ein kleiner Erfolg war darunter. So habe ich einen Code aus einem anderen Forum kopiert und etwas angepasst. Der "Speichern" Button hat dann zumindest die benötigten Zellen in die 2. Tabelle kopiert und nach unten fortlaufend angefügt, siehe Bild 1


Zur Veranschaulichung noch die erste Tabelle die ich nun mit dem Dropdpwn Menu erweitert hatte, Bild2

Die 3. Zeile, bzw. die Inhalte der Zellen von A-J sollen dann in die zweite Tabelle: Abruf und die dritte Tabelle: Archivierung, genauso aufgebaut wie in Bild3 und dann hier beschrieben nach Dropdown-Auswahl übertragen werden.


Auch habe ich lange versucht mir den Code selbst zusammen zu basteln, scheitere aber an meinen fehlenden Kenntnissen der Syntax. Folgende Beispiele hatte ich versucht miteinander zu verbinden:

Funktion um leere Felder zu ignorieren:
MITTELWERTWENN(Bereich, Kriterien, [Mittelwert_Bereich]) -> als Funktion um leere Felder zu ignorieren

Makro von dropdown
https://www.extendoffice.com/documents/excel/4421-excel-run-macro-from-drop-down-list.html

Um bei fehlender Auswahl des DropDown Menus den Makro nicht zu aktivieren:

Sub leer()
    If Cells(1, 1).Value = "" Then
        MsgBox "leer"
    End If
End Sub
Zeile nach unten verschieben

http://www.herber.de/forum/archiv/1004to1008/1006509_Zeilen_nach_unten_verschieben.html
Sub NeueEingabeZeile()
  'neue Eingabezeile in Zeile 7 einfügen
  Dim wks As Worksheet
  
  Set wks = ActiveSheet
  With wks
    'Leerzeile einfügen
    .Rows(7).Insert shift:=xlShiftDown
    'Zeile 8 nach zeile 7 kopieren
    .Rows(8).Copy Destination:=.Rows(7)
    'Inhalte in Eingabezellen Zeile 7 löschen
    .Range(.Cells(7, 3), .Cells(7, 6)).ClearContents 'Spalten C bis F
    .Cells(7, 8).ClearContents 'Spalten G
    'neue Zeilennummer Spalte A Zeile 7 eintragen
    .Range(.Cells(7, 3), .Cells(7, 6)).ClearContents 'Spalten C bis F
    .Cells(7, 1).Value = Application.WorksheetFunction.Max(.Range(.Cells(8, 1), _
        .Cells(.Rows.Count, 1).End(xlUp))) + 1
    
  End With
End Sub
http://www.clever-excel-forum.de/Thread-Teil-einer-Tabelle-um-eine-Zeile-nach-unten-verschieben


Anhang:


Bild1


Bild2


Bild3



  

Betrifft: AW: Edit:Makros für 3 Tabellen mit Dropdown und Button
von: Werner
Geschrieben am: 15.09.2018 12:20:57

Hallo Bud,

mit Bildern kann hier miemand etwas anfangen und ich kann mir nicht vorstellen, dass irgendjemand hier deine Datei nachbauen wird.

Bedeutet:
Bitte deine Mappe hier hochladen. Am besten mit ein paar eingetragenen Datensätzen in den Blättern 2 und 3, damit man sieht, wie dein Wunschergebnis aussieht.

Gruß Werner


  

Betrifft: Excel-Datei-Upload
von: Bud
Geschrieben am: 17.09.2018 10:37:02


Hallo Werner,

danke für deine Antwort. Ich habe nun die Mappe versucht hochzuladen, bekam allerdings trotz Standard-Excel-Format den Hinweis dass der Dateityp der falsche sei:






Ich erwarte nicht dass mir jemand die Mappe nachbaut oder das alles schon fertig einfügt.
Nur bei den Codes für die Makros brauche ich ja Hilfe, welche ich dann auch selbst einfügen könnte.
Mit den gesammelten Beispielen für einzelne Prozesse wollte ich dafür auch schon eine Grundlage aufzeigen, die vielleicht jmd. helfen könnte der sich evtl. die Mühe macht die Codes zu schreiben.
Weiter bin ich aufgrund meiner fehlenden Syntax-Kenntnisse eben leider nicht gekommen.

Auch Hinweise oder eine Hilfestellung dafür würde mir schon weiterhelfen und ich könnte versuchen mir dann die Codes selbst zu basteln.

Grüße,
Bud


  

Betrifft: Umlaute/Leerzeichen im Dateinamen?
von: Werner
Geschrieben am: 17.09.2018 11:03:04

Hallo Uwe,

da steht aber nichts von einem ungültigen Dateityp sondern ungültiger Dateiname.
Benenne deine Datei mal um z.B. in Montag und versuch es noch mal.

Gruß Werner


  

Betrifft: AW: Umlaute/Leerzeichen im Dateinamen?
von: Bud
Geschrieben am: 17.09.2018 11:50:57


Dann war das der Umlaut bei Übertragungsrate. Danke für den Hinweis.
Dies wäre dann die Arbeitsmappe:

http://www.herber.de/bbs/user/124014.xlsm


Empfiehlt es sich meine Fragestellung noch einmal neu zu formulieren und zu posten?
Ich befürchte nur, dass keiner einen mittlerweile vier Tage alten Thread nochmal aufruft und
bis zum ersten Post hinuter scrollt.

Grüße,
Bud


  

Betrifft: Fortschritt
von: Bud
Geschrieben am: 19.09.2018 17:15:54


Hey nochmal,

ich hatte bisher nichts von "Makros aufzeichnen" gewusst.
Damit konnte ich nun aber die grundlegenden Funktionen für meine Arbeitsmappe erstellen.

Hurra!

Ich habe je ein Makro aufgezeichnet welche die Werte der ersten Tabelle entweder in die zweite
oder eben dritte Tabelle kopiert und an oberster Stelle einfügt.
Die anderen Zeilen verschieben sich dann wie gewünscht. Die letzte Zeile wird gelöscht.
Und zum Schluss die Eingabezeile in Tabelle 1 wieder zurückgesetzt.

So weit so gut.


Nun fehlt nur noch ein Makro.

Und zwar, dass je Auswahl im Dropdown-Menu eines der anderen beiden Makros die nun funktionieren, aktiviert werden.

Dazu habe ich folgenden Code gefunden und mit meinen Werten angepasst:

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect (Target, Range ("B3")) Is Nothing Then
     Select Case Range("B3")
        Case "Abruf": Speichern1
        Case "Archivierung": Speichern2
     End Select
  End If
End Sub

Nur, so funktioniert das leider nicht.

Zum einen kann ich den Code so nicht einfach in ein neu erstelltes Makro einfügen.
Und der Eintrag 'Is Nothing then' lässt mich auch daran zweifeln dass dieser Code in der Form der Richtige ist.
Wenn 'Is Nothing then' bedeuet dass die Zelle leer ist, könnte ich ab diesem Strang einfügen dass keines der Cases ausgeführt wird und eine Message erscheint?

Tut mir leid, aber dies lässt sich glaube ich nicht mit einer Aufzeichnung lösen.
Auch ein Tipp wo ich ansetzen könnte, wäre sehr hilfreich.

Danke,
Bud


  

Betrifft: AW: Makros für 3 Tabellen mit Dropdown und Button
von: Piet
Geschrieben am: 19.09.2018 21:01:10

Hallo

mir ist beim Lesen eine wesentliche Differenz im Text aufgefallen! Mal heist es B2, mal B3!!
Den Code habe ich getestet, der funktioniert einwandfrei, wenn die richtige Zelle aktiviert wird!

In B2 habe ich ein Dropdown-Menu (Liste) eingefügt mit den Parametern "Abruf" und "Archivierung".
Der Benutzer soll bei Eingabe der Daten im Drop-Down (Zelle B3) auswählen müssen

Bevor wir hier weiter raten woran es liegt prüfe bitte zuerst die richtige Zelle!

mfg Piet


  

Betrifft: AW: Makros für 3 Tabellen mit Dropdown und Button
von: Piet
Geschrieben am: 19.09.2018 21:27:00

Hallo

ich habe deine Beispieldatei jetzt erst gesehen und runter geladen. Jetzt ist alles klar!

Du kannst nicht in ein normales Modul den Code reinschreiben - der in die Tabelle "Rechner" gehört.
Aktivere im VBA Editor in der Projekt Ansicht die Tabelle "Rechner" und schreibe diesen neuen Code rein!
Der andere war zum speichern, du must aber eine "Eingabe" auswerten! Das sind zwei getrennte Schuhe!
Und bitte gib dem zweiten Makro einen vernünftigen Namen, nicht Macro2!! Das verwirrtt nur!

mfg Piet

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B3")) Is Nothing Then
        Select Case Range("B3")
            Case "Abruf": Abruf
            Case "Archivierung": Macro2
        End Select
    End If
End Sub



  

Betrifft: AW: Makros für 3 Tabellen mit Dropdown und Button
von: Bud
Geschrieben am: 20.09.2018 12:09:33


Hallo Piet,

danke für den Hinweis. Ich habe es versucht so zu machen, aber es hat nicht funktioniert.
Ich habe jetzt das Dropdown Menu entfernt und für die beiden Eingabe-Typen jeweils eine Zeile erstellt
und dem jeweiligen Button je ein Makro zugeordnet.

Zudem habe ich meine Problemstellung auch in einem anderen Forum diskutiert und wurde auf das zu vermeidende Crossposting hingewiesen. Daher beende ich den Thread hier und verweise für Hilfesuchende mit einem ähnlichem Problem auf das andere Forum:

http://www.clever-excel-forum.de/Thread-Makros-fuer-Button-und-Dropdown-Menu

Danke für die Antworten und Hilfestellungen hier.

Alles Gute,
Bud