VBA in nächste zeile

Diskutiere VBA in nächste zeile im Office Produkte Forum im Bereich Software Forum; guten morgen zusammen, da mir letzte woche bei einem problem geholfen wurde. hoffe ich das ist heute auch wieder der fall Mein Problem ich bin...

Zoone

Threadstarter
Dabei seit
21.07.2009
Beiträge
16
guten morgen zusammen, da mir letzte woche bei einem problem geholfen wurde. hoffe ich das ist heute auch wieder der fall

Mein Problem ich bin für mich eine Tauchgangszusammenfassung am schreiben. Siehe Datei

ich möchte vorne nochmals ein tabellen blatt einfügen wo ich jeweils ein tauchgang aufs mal eintrage dann den Knopf Drucke und er schreibt es hinten (alle TG) rein, und das immer an der nächsten freien stelle so das die tauchgänge vortlaufend nummeriert sind.

eingeben möchte ich das datum, tauchplatz/bez. ort, Spezieller TG,Tiefe,Zeit in min, Nitrox, Meer, Land Kursbegleitung
Kann mann es so machen das ich bei Nitrox Meer und Kurs begleitung nur einen hacken setzen kann?

Das Beste wär natürlich wenn ich den See per "scrolloutmenue" auswählen kann und er mir in ner nächsten zelle die vorhandenen Tauchplätze anzeigt zum auswählen.

Zur Tiefe, îch möchte da gerne die Tatsächliche tiefe eintragen und nachher wählt er aus wenn die zahl grösser als 40.0 ist trägt er bei den deep tg die Tatsächliche tiefe ein und schreibt bei alle TG 40.0 in die Zelle für die Tiefe.

Hat jemand von euch sowas schon mal gemacht? wenn ja hätte sie oder er lust mir zu helfen das zu bewerkstelligen?

Besten dank für eure hilfe
 

Anhänge

  • Logbuch.zip
    86,7 KB · Aufrufe: 156

tomcat3

Dabei seit
18.06.2009
Beiträge
75
Ort
Niedersachsen
erster Ansatz:

Puh... das sind ja gleich eine ganze Reihe an Sachen...
Ich fang einfach mal an:
Ich vermute mal, das du so etwas wie ein Formular haben möchtest, in dem du deine Eingaben machst oder auswählst. (ähnlich dem angehängten Bild)

Wenn dem so ist, fange ich jetzt mal eine kleine Beschreibung an (von Office 2007 ausgehend):
Vorbereitung:
Wenn bei dir in der Menüleiste die Entwicklertools nicht angezeigt werden, dann gehe unter den Officeball links oben ->Excel Optionen -> Häufig Verwendet -> Entwicklerregisterkarte ... anzeigen

Da man schon mal in der Gegend ist gibt es unter den Excel Optionen den Vertrauensstellungscenter -> Einstellungen für das V... -> Einstellung für Makros -> Alle Makros mit Benachrichtigung deaktivieren einstellen.
Ansonsten bekommst du bei nichtsignierten Makros keine Meldung und diese können dann auch nicht ausgeführt werden.

Formular anlegen:
Unter Entwicklertools->Visual Basic aufrufen.
Unter Ansicht->Eigenschaftenfenster das gleichnamige Fenster aktivieren.

Im Fenster "Projekt - VBA-Project" in einem freien Bereich das Kontextmenü aufrufen -> Einfügen -> Userform
Das ist jetzt das Grundgerüst für das Formular.
Im Eigenschaftenfenster kann man jetzt ggf. Name und Caption ändern.
(z.B.: Name: UFTauchgang
Caption: Tauchgang eingeben)

Jetzt kann man anfangen aus der Werkzeugleiste die benötigten Steuerelemente anklicken und auf das Formular setzen.
z.B: - Bezeichnungsfeld (Label) zum Beschriften
- Textfeld (Textbox) für Eingaben
- Kombinationsfeld (Combobox) für Auswahlfelder
- Kontrollkästchen (Checkbox)
- Befehlsschaltflächen (CommandButton)

Wieder kann man ggf. Name und ganz sicher Caption (Beschriftung) ändern.
Bei dem Kombinationsfeld gibt es eine besondere Eigenschaft RowSource.
Hier kann man aus der Tabelle Vorgabewerte laden.
Also z.B.: Tauchplätze!B1:B559

Erste Makros erzeugen und verknüpfen:
Zwar ist das Formular noch ziemlich hohl und hat fast keine Funktion, aber jetzt kann man schon ein kleines Makro erzeugen:

Wieder im Kontextmenü vom Projekt - VBA Project -> Einfügen -> Modul
auswählen und in dem Fenster folgendes eingeben:

Sub FormularAufrufen()
UFTauchgang.Show
End Sub​

Statt FormularAufrufen() könntest du auch auto_open() verwenden, dann wird das Formular beim Start der Tabelle mit ausgeführt (und damit das Formular angezeigt)

Da das Formular nicht nur angezeigt werden soll sondern ggf. auch ausgeblendet, klickst du im Formular doppelt auf den Button für das "Abbrechen" und bekommst sogleich ein Sub-Block für das anklicken diese Buttons angezeigt. (Hier UFTauchgang.Hide eintragen)

Private Sub CBCancel_Click()
UFTauchgang.Hide
End Sub

Und nun zum vorläufigen Schluß, wie man im Tabellenblatt eine Schaltfläche erzeugt:
Wieder in der Exceltabelle unter Entwicklertools -> Einfügen -> Formularsteuerelemente -> Button auswählen und einmal an die Tebelle klicken. Jetzt zeigt Excel sofort Makro zuweisen an. Hier das FormularAufrufen auswählen. Beschriftung und Größe ändern...


So das war's erstmal... bevor ich weitermache, möchte ich schon wissen, ob das in die Richtung ging.;)


Schlußbemerkung:
Wenn andere Namen oder Elemente verwendet werden, muß dies eintsprechend geändert werden. Ich hab' hier nur die von mir verwendeten Namen verwendet.
 

Anhänge

  • Formular.JPG
    Formular.JPG
    33,6 KB · Aufrufe: 1.488
  • TG Zusammenfassung.zip
    97,1 KB · Aufrufe: 151

tomcat3

Dabei seit
18.06.2009
Beiträge
75
Ort
Niedersachsen
Symbol anzeigen

Äh... da war ja noch was...
Wenn du nicht diese "X" für die Auswahl in deiner Tabelle verwenden willst, wie wärs denn mit Einfügen -> Symbol -> Schriftart: Wingdings Zeichencode 254 oder 253.
Wenn man die Zelle in der man das verwendet in Schriftgröße 12 und vertikal und horizontal mittig zentriert, sieht das vielleicht gar nicht so schlecht aus.
Siehe Alle TG!K48.
Kleiner Nachteil: Deine Auswertungen (Zählenwenn) müßten dann angepasst werden.

So nun ist aber wirklich Schluß. :sing (Vorläufig)
 

Zoone

Threadstarter
Dabei seit
21.07.2009
Beiträge
16
Super Hilfe

Sali Tomcat, als erstes möchte ich mich bei dir nochmals für die hilfe im letzten problem bedanken.

Danke auch das du mir bei diesem Problem hilfst, ich werde das ganze morgen mal anschauen. bin jetzt noch am arbeiten.

darf ich dich zwei sachen noch fragen?

erstens was machst du beruflich das du das so gut kannst, zweitens aus welchem eckchen der welt kommst du? ( bitte adresse per mail privat zu kommen lassen) ich würde mich gerne bedanken für deine hilfe

mfg marco
 

Zoone

Threadstarter
Dabei seit
21.07.2009
Beiträge
16
In die Richtige Richtung???

Genau in die Perfekte Richtung,

Gibt es irgendein schlaues buch wo das vba gut beschrieben ist so für mich.

Darf ich dich fragen, das Formular hat jetzt 2 TG nummer felder, wie kann man eins rausnehmen?
 

ModellbahnerTT

Dabei seit
20.04.2005
Beiträge
3.778
Alter
40
Das raus nehmen der doppelten Tauchnummer ist kein Problem. Wie ist dein derzeitiger Kenntnisstand in VBA? Bei der Menge an Tauchgängen würde ich das aber per Datenbank machen.
 

Zoone

Threadstarter
Dabei seit
21.07.2009
Beiträge
16
To Tomcat

Habe doch heute noch ein bisschen rum gepröbelt, und habe sogar was auf die Reihe gekriegt, """die Schaltfläche""", meine wunsch schaltfläche. kannst du mir bitte zeigen wie ich es machen kann das es in die nächste freie zelle schreibt ich den see auswählen kann, und er gibt mir dann nachher die möglichen tauchplätze wieder.

Danke nochmals für die mega zackige hilfe:up:up:up:up:up:aah:aah
 

Anhänge

  • Logbuchversion2.zip
    96,4 KB · Aufrufe: 188

Zoone

Threadstarter
Dabei seit
21.07.2009
Beiträge
16
was meinst du mit ner datenbank

meine VBA kenntnisse beziehen sich darauf das ich weiss was vba ist und was es so kann, und dann noch das was tomcat heute abend geschrieben hat, mehr nicht. sorry
 

ModellbahnerTT

Dabei seit
20.04.2005
Beiträge
3.778
Alter
40
Mit einer Datenbank meine ich das du verschiedene Tabellen hast die du dann per Dropdown wie von tomcat3 gezeigt direkt auswählen kannst. Weiterer Vorteil ist die bessere Auswertungsmöglichkeiten einer Datenbank. Des weiteren vermeidest du Redundanz.
 

tomcat3

Dabei seit
18.06.2009
Beiträge
75
Ort
Niedersachsen
nächste Zeile

Habe doch heute noch ein bisschen rum gepröbelt, und habe sogar was auf die Reihe gekriegt, """die Schaltfläche""", meine wunsch schaltfläche. kannst du mir bitte zeigen wie ich es machen kann das es in die nächste freie zelle schreibt ich den see auswählen kann, und er gibt mir dann nachher die möglichen tauchplätze wieder.

Danke nochmals für die mega zackige hilfe:up:up:up:up:up:aah:aah

Wenn du jetzt auf den Ok Button doppelklickst und dort folgendes einträgst:

Code:
  Dim Zeile
  
  ' Erste freie Zeile finden, indem man in der ersten Spalte einen freien Platz findet
  Zeile = Cells(Rows.Count, 2).End(xlUp).Row + 1
  If (Zeile > 0) Then
    ' Nummer des Tauchgangs ist die Zeilennummer - 1
    Cells(Zeile, 1).Value = Zeile - 1
    ' Ab hier werden die Werte des Formulars eingetragen
    Cells(Zeile, 2).Value = DateValue(UFTauchgang.TextBox1)
    Cells(Zeile, 3).Value = UFTauchgang.CBOrt.Value
    ' und so weiter...
    ' Nun noch die Checkboxen
    If (UFTauchgang.CBNitrox.Value) Then
      Cells(Zeile, 8).Value = "X"
    Else
      Cells(Zeile, 8).Value = ""
    End If
    ' und so weiter...
  End If

Der Rest ist eigentlich angepasstes Copy&Paste...
Wie du siehst (TextBox1) ist es wichtig brauchbare Bezeichner zu verwenden, sonst stellt sich später immer wieder die Frage: "Wofür war die TextBox1 nochmal?":wut

Für Später: Fehlerbehandlung bei Falscheingabe (Beispiel: Datum) einrichten
 

tomcat3

Dabei seit
18.06.2009
Beiträge
75
Ort
Niedersachsen
Genau in die Perfekte Richtung,

Gibt es irgendein schlaues buch wo das vba gut beschrieben ist so für mich.
Für eine Buchempfehlung bin ich der falsche, aber ich kenne jemanden, der schwört auf die "... für Dummies"-Reihe. Vielleicht findes du es im Buchladen deiner Wahl und blätterst es mal durch, ob es deinen Geschmack trifft.

Ich habe hier nur zwei Bücher: "Excel 2000 Kompendium" und "Das Excel-VBA Codebook"


Darf ich dich fragen, das Formular hat jetzt 2 TG nummer felder, wie kann man eins rausnehmen?

Im Formular das Element anklicken und mit "Entf" löschen.
 

tomcat3

Dabei seit
18.06.2009
Beiträge
75
Ort
Niedersachsen
See und Tauchplatzauswahl

Vorbereitung:
Aus der Tabelle für die Tauchplätze habe ich eine neue "Default"-Tabelle erzeugt. In einer Zeile die Seen/Flüsse und dadrunter die dazugehörigen Tauchplätze.
Um die Liste ggf. mal ohne großen Aufwand verändern zu können wird in B2 die Anzahl der Seen und in der Zeile 4 die Anzahl der jeweiligen Tauchplatzeinträge pro See errechnet.
(Da diese Tabelle eigentlich nur für das Formular ist, kann sie später auch ausgeblendet werden. Kontextmenü des Tabellenreiters -> Ausblenden; Einblenden geht dann wieder mit -> Einblenden)

Code Formuar anpassen:
In der Codeseite des Formular kommt nun folgende Zeilen hinzu:
Code:
Private Sub UserForm_Initialize() ' Wird automatisch aufgerufen, wenn die Userform erzeugt wird

  UFTauchgang.TBDatum.Text = Date ' In die Textbox das aktuelle Datum eintragen
  
  UFTauchgang.CBSeen.Clear ' Löscht die Einträge der Combobox
  ' In folgenden werden die Einträge für die Seen aus der "Default"-Tabelle geholt (z.B. C2:DB2)
  For N = 1 To Worksheets("Default").Cells(2, 2).Value
    UFTauchgang.CBSeen.AddItem Worksheets("Default").Cells(2, N + 2).Value
  Next N
  
  UFTauchgang.CBSeen.ListIndex = UFTauchgang.CBSeen.ListCount - 1 ' Zürichsee als erste Anzeige (ist zufälligerweise der letzte Eintrag)
  Call CBSeen_Change                                              ' Ortsliste mit passenden Werten laden
  UFTauchgang.CBOrt.ListIndex = UFTauchgang.CBOrt.ListCount - 1   ' Altendorf Bucht als erste Anzeige (ist zufälligerweise der letzte Eintrag)

End Sub

Hier wird in das Feld für das Datum das aktuelle Datum eingesetzt.
Dann die Combobox für die Seen gelöscht und neu aus der Defaulttabelle aufgebaut.
Zum Schluß wird noch der Zürichsee und die Alendorf Bucht als Standard eingetragen.

Änderung Seen Combobox -> Tauchplatz Combobox:
Wieder in der Codeseite des Formulars wird folgende Routine eingetragen:
Code:
Private Sub CBSeen_Change()
  Dim IndexSeen
  
  IndexSeen = UFTauchgang.CBSeen.ListIndex + 1 ' Welcher See ist ausgewählt ( +1, weil der Index mit 0 anfängt)
  UFTauchgang.CBOrt.Clear ' Löscht die Einträge der Combobox
  If (IndexSeen > 0) Then
    ' In folgenden werden die Einträge für die Tauchplätze aus der "Default"-Tabelle geholt (in einer von den Seen abhängigen Spalte)
    For N = 1 To Worksheets("Default").Cells(4, IndexSeen + 2) ' Anzahl Tauchplätze
      UFTauchgang.CBOrt.AddItem Worksheets("Default").Cells(N + 4, IndexSeen + 2).Value
    Next N
  End If
End Sub
Hier wird erst einmal festgestellt welcher Eintrag bei der Seen Combobox ausgewählt ist.
Dann wird wie oben, die Tauchplatz Combobox gelöscht und die Werte neu eingetragen. Je nachdem was bei den Seen ausgewählt war.
Der Unterschied zum oben Angegebenen ist, das die Werte nun untereinander und nicht nebeneiander liegen. (nicht verwirren lassen)

So das war's jetzt, glaub' ich. :sing
Ich hoffe das war jetzt nicht zu viel auf einmal. :unsure

Schlußbemerkung:
Ich habe inzwischen einige Bezeichner überarbeitet (siehe TextBox1 vom Anfang) damit es halbwegs lesbar bleibt.
Im Anhang ist das angepasste Excelfile.

Fehlerbehandlung fehlt noch weiterhin.
 

Anhänge

  • TGZusammenfassung-neu.zip
    109,1 KB · Aufrufe: 153
Thema:

VBA in nächste zeile

VBA in nächste zeile - Ähnliche Themen

Ultra HD Blu Ray: alle Filme in Deutschland auf dem neuen Datenträger - UPDATE: 26.01.2016, 15:37 Uhr: Ab Anfang März 2016 werden die ersten Ultra HD Blu Ray Player sowie die entsprechenden Discs verkauft werden. Den Anfang...
Sechs Festplatten-Imager im Test: Karsten Violka Sicherheits-Klone Sechs Festplatten-Imager für die Systemsicherung Indem Sie ein Abbild Ihrer Systempartition anfertigen und es...

Sucheingaben

vba word nächste zeile

,

Logbuch Userform

Oben