Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Userform





Frage

Habe in meiner Tabelle A1Januar:L1Dezember stehen,nun möchte ich mit einer userform Beträge eingebe zb. februar 100DM oder Dezember 50DM müsste aber auch wieder Beträge löschen können mit der Userform fals sie falsche eingegeben wurden. vielleicht kann mir einer ein Beispiel senden. wie eine Userform geht usw das weiß ich schon Arbeite damit . Ein Dankeschön im Vorraus mfg Rolf

Antwort 1 von rolandaa

weis einer wirklich
was er will ?!?

Antwort 2 von Event

Hallo

Versuchs doch mal mit "> Daten > Maske..."

Gurten Rutsch

Antwort 3 von Bischoff2000

ist doch ganz einfach habe oben jeden monat stehen von links nach rechts jauar bis dezember und möchte darunter immer einen betrag eingeben und das nicht mit einer Maske sondern mit einer userform

mfg Rolf

Antwort 4 von coros

Moin an alle,

Rolf scheint ein wenig schreibfaul zu sein. Er schreibt weder, ob er für dieses Vorhaben bereits eine UserForm erstellt hat, noch wenn ja, welche Felder darin enthalten sind. Da ich beim Hellseherkurs mal wieder nicht aufgepasst habe, muss ich das anhand eines Beispiels erklären.

Ausgangslage: Eine UserForm in der sich ein Kombinationsfeld (ComboBox), ein Textfeld (TextBox) und eine Befehlsschaltfläche (CommandButton) befinden. Kopiere nachfolgenden Code in das VBA Projekt dieser UserForm.

Option Explicit

Public Wiederhoungen As Integer

Private Sub UserForm_Initialize()
For Wiederhoungen = 1 To 12
ComboBox1.AddItem Sheets("Tabelle1").Cells(1, Wiederhoungen)
Next
End Sub

Private Sub CommandButton1_Click()
For Wiederhoungen = 1 To 12
If Sheets("Tabelle1").Cells(1, Wiederhoungen) = ComboBox1.Text And Not IsEmpty(TextBox1) Then
On Error GoTo Errorhandler
Sheets("Tabelle1").Cells(2, Wiederhoungen) = CDbl(TextBox1.Text)
End If
Next
Exit Sub
Errorhandler:
Sheets("Tabelle1").Cells(2, Wiederhoungen).ClearContents
End Sub


Mit diesem VBA Code wird das Kombinationsfeld beim Initialisieren der UserForm mit den Werten aus Zeile 1 Spalte A bis L, also den Monatsnamen gefüllt. Wenn man nun in das Textfeld einen Betrag eingibt und danach den CommandButton betätigt, wird der Betrag in die entsprechende Monatsspalte in Zeile 2 übertragen. Soll ein Wert aus der Zeile entfernt werden, muss ebenfalls aus dem Kombinationsfeld der Monatsname, dessen Betrag gelöscht werden soll, ausgewählt werden. Dann muss, sofern vorhanden, der Betrag aus dem Textfeld gelöscht werden, so dass dieses leer ist und dann wieder den Button betätigen. Alternativ kann man für das Löschen auch einen 2. Button in der UserForm platzieren. Dann muss aber in dem UserForm_Initialize-Ereignis die Zeile

On Error GoTo Errorhandler


und die Zeilen

Exit Sub
Errorhandler:
Sheets("Tabelle1").Cells(2, Wiederhoungen).ClearContents


gelöscht und der Code

Private Sub CommandButton2_Click()
For Wiederhoungen = 1 To 12
If Sheets("Tabelle1").Cells(1, Wiederhoungen) = ComboBox1.Text Then
Sheets("Tabelle1").Cells(2, Wiederhoungen).ClearContents
End If
Next
End Sub


muss in das VBA Projekt der UserForm hinzugefügt werden. Auch mit diesem Code muss in der ComboBox der Monatsname ausgewählt werden und dann kann der 2. Button betätigt werden, der den Betrag unter dem Monatsnamen dann löscht.

Kannst Dir ja eine Variante aussuchen. ich hoffe, Du kommst klar. Bei Fragen melde Dich bitte. Dann aber bitte in paar mehr Infos geben. Denn Du stellst ja nicht zum ersten Mal hier eine Frage und solltest bereits wissen, dass man, um sich ein Bild machen zu können, soviel Infos wie möglich benötigt.

Einen guten Rutsch.

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 5 von Bischoff2000

oh danke für deine hilfe ,es ist so wenn mann halt zu viele infos schreibt blicken die leute nicht mehr durch mir ist es lieber es wird noch mal nachgefragt.
nochmals danke.


so es geht super mit der userform ,aber ich möchte nicht das es mir der betrag immer in die gleiche zeile einträgt es soll der betrag immer in der spalte danach wo die nächste zelle noch frei ist eingetragen werden und so weiter so das die anderen werte immmer bleiben

mfg Rolf

Antwort 6 von Bischoff2000

halt noch etwas ich weis jetzt nicht wie mann das mit den löschen regeln kann vielleicht das mann immer wenn man auf den löschen button drückt der letzte betrag vom ausgewählten monat gelöscht wird .geht so was
nochmals danke

mfg Rolf

Antwort 7 von coros

Hallo Rolf,

verzeih mir den nachfolgenden Text, aber was Du bezüglich der Infos schreibst ist großer "BullShit". Warum sollen Leute nicht mehr durchblicken, wenn Sie ein paar mehr Infos mehr haben. Eher anders herum wird ein Schuh draus. Also wenn man zu wenig Infos hat, blickt keiner durch und es kommen laufend Nachfragen und der Beitrag wird nur unnötig in die Länge gezogen.

Tausche den nachfolgenden Code gegen den gesamten VBA COde in der UserForm aus.

Option Explicit

Public Wiederhoungen As Integer, Spalte As String


Private Sub UserForm_Initialize()
For Wiederhoungen = 1 To 12
ComboBox1.AddItem Sheets("Tabelle1").Cells(1, Wiederhoungen)
Next
End Sub

Private Sub CommandButton1_Click()
For Wiederhoungen = 1 To 12
If Sheets("Tabelle1").Cells(1, Wiederhoungen) = ComboBox1.Text And Not IsEmpty(TextBox1) Then
Spalte = Mid(Sheets("Tabelle1").Cells(1, Wiederhoungen).Address, 2, 1)
Sheets("Tabelle1").Cells(Sheets("Tabelle1").Range(Spalte & "65536").End(xlUp).Offset(1, 0).Row, Wiederhoungen) = CDbl(TextBox1.Text)
End If
Next
TextBox1.Text = ""
End Sub

Private Sub CommandButton2_Click()
For Wiederhoungen = 1 To 12
If Sheets("Tabelle1").Cells(1, Wiederhoungen) = ComboBox1.Text Then
Spalte = Mid(Sheets("Tabelle1").Cells(1, Wiederhoungen).Address, 2, 1)
If Range(Spalte & "65536").End(xlUp).Row >= 2 Then
Sheets("Tabelle1").Cells(Sheets("Tabelle1").Range(Spalte & "65536").End(xlUp).Row, Wiederhoungen).ClearContents
End If
End If
Next
End Sub


Dieser Code solte genau das machen, was Du Dir vorgestellt hast. Hoffe ich zumindest. Wenn nicht, dann melde Dich bitte noch mal.

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 Event

@Oliver alias Coros

Alles erdenklich Gute im nächsten Jahr für Dich und Deine Lieben.
Deine Geduld ist bewundernswert.

Guten Rutsch
..and a happy new year

Antwort 9 von coros

Hallo @Event,

danke Dir für Deine Worte. Ich wünsche auch Dir und Deiner Familie alles gute und ein erfolgreiches Jahr 2006.

Wir lesen dann nächstes Jahr sicherlich wieder von einander, ich gehe jetzt feiern.


MfG,
Oliver
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.

Antwort 10 von Bischoff2000

Hi coros danke dir nochmals ,das was du mir geschrieben hast ist genau das was ich wollte , es kommt nur noch ein fehler den du noch für mich beareiten musst wenn ich in der userform das monat auswähle und ich dann keinen betrag eingebe kommt eine laufzeitfehler.

danke rolf

Antwort 11 von coros

Morgen Rolf,

ein gesundes neues Jahr wünsche ich Dir und allen anderen.

Tausche den Code für den CommandButton1 gegen den nachfolgenden aus.

Private Sub CommandButton1_Click()
For Wiederhoungen = 1 To 12
If Sheets("Tabelle1").Cells(1, Wiederhoungen) = ComboBox1.Text And TextBox1.Text <> "" Then
Spalte = Mid(Sheets("Tabelle1").Cells(1, Wiederhoungen).Address, 2, 1)
Sheets("Tabelle1").Cells(Sheets("Tabelle1").Range(Spalte & "65536").End(xlUp).Offset(1, 0).Row, Wiederhoungen) = CDbl(TextBox1.Text)
End If
Next
TextBox1.Text = ""
End Sub


Damit sollte es funktionieren.

Wenn doch noch Probleme auftreten sollten, so melde Dich bitte wieder. Verfasse dann aber bitte Deine Frage etwas anders. Denn auf das Wort "muss" reagiere ich etwas allergisch. Wenn Du nicht wissen solltest, was ich meine, dann lese Dir Deinen letzten Beitrag noch mal durch. Ganz besonders die Passage

Zitat:
es kommt nur noch ein fehler den du noch für mich beareiten musst


Denn müssen muss hier keiner, das ist alles feiwillig.

Also bis demnächst dann.

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 12 von Bischoff2000

na so war das ja nicht mit dem musst gemeind mann soll halt nicht gleich jedes word auf die goldwage legen

auf jeden fall läuft die datei super ( danke)

Ich bedanke mich bei dir und bei allen anderen und wünsche jeden ein frohes neues jahr 2006

rolf

Antwort 13 von Bischoff2000

Hi wünsche allen ein gutes neues jahr.
brächte nochmals eure hilfe bei den obigen code ,
Mir ist erst jetzt aufgefallen das wenn ich in der Box einen text statt eine zahl eingebe das da auch wieder ein laufzeitfehler kommt .
vielleicht kann mir da nochmals jemand helfen.


danke im vorraus.

rolf

Antwort 14 von coros

Moin Rolf,

tausche den Code für den CommandButton1 gegen den nachfolgenden aus.

Private Sub CommandButton1_Click()
For Wiederhoungen = 1 To 12
If Sheets("Tabelle1").Cells(1, Wiederhoungen) = ComboBox1.Text And TextBox1.Text <> "" And IsNumeric(TextBox1) Then
Spalte = Mid(Sheets("Tabelle1").Cells(1, Wiederhoungen).Address, 2, 1)
Sheets("Tabelle1").Cells(Sheets("Tabelle1").Range(Spalte & "65536").End(xlUp).Offset(1, 0).Row, Wiederhoungen) = CDbl(TextBox1.Text)
End If
Next
TextBox1.Text = ""
End Sub


Somit sind nur noch Zahlen erlaubt. Das sollte es gewesen sein.

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 Bischoff2000

jo klappt super

Danke an allen


Rolf

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


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: