7.3k Aufrufe
Gefragt in Tabellenkalkulation von edik2 Einsteiger_in (35 Punkte)
Hallo,
bin in Sachen VBA Anfänger. Habe folgende Probleme:
1) habe eine Spalte zb. "H" mit Werten. Die Spalte ist nicht komplett gefüllt(leere Zellen). Jetz wollte ich so, dass per Button druck der Höchste Wert der Spalte gefunden wird dann um 1 erhöht und in die ausgewählte Zelle(leere Zelle) (Auswahl per Maus) der Spalte "H" reingeschrieben wird.
habe folgendes probiert

Private Sub CommandButton1_Click()
Dim lngLast As Long
Dim lngMax As Long

lngaktuell = Cells(Rows.Count, 8).Select
lngMax = Application.WorksheetFunction.Max(Columns("H"))

Cells(lngaktuell, 8).Value = lngMax + 1
End Sub

2)sobald ein Wert in die Spalte zb. "G"(beliebige Zeile) reingeschrieben wird, soll ein aktuelles Datum in die nächste Spalte nebenliegende Zeile reingeschrieben werden.

besten Dank im voraus.

7 Antworten

0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo Edik,

kopiere nachfolgenden Code in das VBA-Projekt des Tabellenblatts, in dem er wirken soll, sprich indem sich Dein CommandButton1_Click bereits befindet, den Du mit nachfolgendem Code austauscht.

Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.

Option Explicit

Private Sub CommandButton1_Click()
Dim rngZellwert As Range
Dim lngMax As Long
lngMax = Application.WorksheetFunction.Max(Columns("H"))
For Each rngZellwert In Range("H1:H65536")
If rngZellwert.Value = lngMax Then
Selection.Value = lngMax + 1
Exit For
End If
Next
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 7 Then
Target.Cells.Offset(0, 1) = Format(Now, "dd.mm.yyyy")
End If
End Sub


MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von edik2 Einsteiger_in (35 Punkte)
Hallo Oliver,
erstmal großen Lob an dich! Habe letztendlich alles in der Button Funktion gelöst. Ich habe eine Frage zum Quellcode: was bezweckst du mit der For Schleife genau?

Dann wollte ich sicherstellen dass der Eintrag nur in die Spallte H und in die leere Zeile erfolgen darf. Habe folgende IF Abfrage gemacht, die aber Syntax Fehler ausgibt.

If (ActiveCell.Value = 0) And (ActiveCell.Range In Range("H1:H65536")) Then


3) Ich habe ("Dropdown1_BeiÄnderung") Feld mit Elementen. Jetzt wollte ich wenn man in die Spalte "D" in die jeweils vorher angeklickte Zelle das Elementname aus dem Dropdown1 Feld nach Auswahl übertragen wird. Die dazugehörige Nummer aus dem Dropdownfeld soll in die Spallte "C" mit übergeben.

Danke noch mal.
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo edik,

mit der Schleife wird die gesamte Spalte H mit dem Wert aus der Funktion "Max" verglichen. Wurde die Zelle mit dem Max-Wert gefunden, wird in die markierte Zelle der Max-Wert +1 eingetragen.
Wobei mir jetzt beim Erklären aufgefallen ist, dass mein Code blödsinn ist und ich wieder zu kompliziert gedacht habe, denn die Zeile

Selection.Value = Application.WorksheetFunction.Max(Columns("H")) + 1liefert das gleiche Ergebnis.

Deine Abfrage muss wie folgt lauten:

If ActiveCell.Value = 0 And ActiveCell.Column = 8 Then

Zu 3.) Das habe ich leider nicht verstanden.

MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von edik2 Einsteiger_in (35 Punkte)
Hallo Oliver,

ich versuche noch mal. :)
Ich wollte aus dem Dropdown Menü ähnlich einer Combobox, die Einträge durch Auswahl per Maus in das zuvor angeklicktes Feld (Spalte "C", leere Zelle) den Namen(Dropdown Element) übertragen.
Die laufende Nummer des Eintrags aus dem DropDown wollte ich gerne auch mitübertragen aber in die Spalte "B". (Hierfür würde wahrscheinlich die case Abfrage sich eignen ist aber nur ein Gedanke )

Andere Frage, wo könnte man die Referenz der Funktionen und deren Methoden mit Erklärung und deren Möglichkeiten nachlesen?

Ich danke dir für deine Mühe.
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo edik,

leider immer noch nicht ganz verständlich.

was hast Du denn nun? Eine ComboBox? Aus Deiner Aussage

Dropdown Menü ähnlich einer Combobox


geht das leider nicht hervor. Da es mehrere Objekte gibt, die "ähnlich" einer ComboBox ist, müsste man schon wissen, um was für ein Obejkt es sich nunhandelt.

Was für eine laufenden Nummer meinst Du? Woher stammt diese Nummer? Steht die auch in dem Auswahlfeld, welches ähnlich einer ComboBox ist?

Andere Frage, wo könnte man die Referenz der Funktionen und deren Methoden mit Erklärung und deren Möglichkeiten nachlesen?

Eine Möglichkeit ist die VBA-Hilfe von Excel zu benutzen (in der VBA-Umgebung die F1-taste betätigen). Ansonsten im Internet suchen und nachlesen und viel probieren von Vorschlägen, die man in Foren findet.
Sorry, dass ich Dir keine einschlägige Lektüre nennen kann, aber ich habe soetwas leider nicht. Bei mir kommt dass von meinem Beruf, dass ich mich mit VBA etwas auskenne.

MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von edik2 Einsteiger_in (35 Punkte)
so jetzt noch mal, es handelt sich um ein Steuerelement(Kombinationsfeld).

Die Einträge für dieses Feld(Kombinationsfeld) habe ich aus einer anderen "Tabelle3". Über Eingabebereich und Zellverknüpfung habe ich die Einträge in das Kombinationsfeld (ist in der Tabelle2) eingebunden. Diese Einträge für ein Kombinationsfeld gehen von der (Tabelle3, Splate B ,Zellen 150-170).
Die Einträge in der Tabelle3 haben in der Spalte A zugehörige Artikelnummer.
Jetzt möchte ich, wenn ich in der Tabelle2 das Kombinationsfeld öffne und ein Artikel(Name) auswähle, dass es in der Tabelle2 Spalte D die Artikelname erscheint und in der Spalte C die zugehörige Artikelnummer.
Ich hoffe, dass ich jetzt besser erklären konnte.

MfG edik
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo edik,

schau Dir mal auf meiner HP in der Rubrik Beispieldateien das Beispiel 110 an. Dort stelle ich eine Beispieldatei zur Verfügung, in der Daten in mehrere Spalten in eine Combobox eingelesen werden. Bei dem Beispiel wird Dir die Auswahl in einer Messagebox ausgegeben. Man kann anstelle der MessageBox diese Daten dann wieder in eine Datei zurückschreiben lassen.

Übrigens ein Kombinationsfeld ist eine ComboBox und nicht nur eine ähnliche ComboBox.

Bei Fragen melde Dich.

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