Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Optionsfelder aus UserForm in bestimmte Felder





Frage

Hallo, ich habe mal wieder ein kleines Problem. Ich will über ein UserForm Fragebögen auswerten, dazu habe ich mir schon ein tolles Userform mit ganz vielen Optionsfeldern ausgedacht. Nun habe ich das Problem, dass ich mehrere Bögen in folge bearbeiten möchte. Dazu habe ich mir schon einen Button Datenübernehmen angelegt, der das Userform nicht schließt sondern nur die "Informationen" in die Exceltabelle überträgt mit dem Wert 1. Wenn ich jetzt den zweiten Bogen bearbeite und er idebtische Antworten gibt, sollte dann nach Datenübernahme aus der 1 eine 2 werden....usw. Ein Beispiel: Findest Du Zitroneneis toll? ja nein der erste antwortet mit ja und im zweiten Fragebogen steht auch ein ja also sollte auf der Tabelle im Feld B2 der Wert 2 erscheinen.... Kann mir jemand auf die Sprünge helfen? Vielleicht gehe ich die ganze Sache auch falsch an und es gibt einen viel einfacheren Weg?! Danke Marsi

Antwort 1 von Coolpix

hallo Marsi,

du mußt beim Übertagen der Daten vorm Schreiben in das Excelblatt den Wert der Zelle lesen und dann den neuen Wert dazuaddieren und wieder in die gleiche Zelle schreiben.

z.B.

Wert = sheets(1).cells(1,1).Value + 1
sheets(1).cells(1,1).value= Wert

Feedback wäre nett ...

Greetings ;-)



Antwort 2 von Marsi

Ich würde es gerne ausprobieren,

aber ich bräuchte noch ne kleine Erklärung,

was bezeichnen die Ziffern hinter sheets und vor allem hinter cells genau?

Danke

Antwort 3 von coros

Hi Marsi,

bei der Zahl hinter Sheets handelt es sich um das 1. Tabellenblatt, z.B. Tabelle1. Bei dem 2. Blatt würde man eine 2 in die Klammern schreiben. Alternativ könnte man aber auch den Namen des Blattes einsetzen.

Bei den Zahlen hinter Cells handelt es sich um Zeile und Spalte. Die erste Zahl sagt die Zeile aus, also die 1. Zeile. Wenn es eine andere Zeile sein soll, muss diese Zahl geändert werden, z.B. 2 für Zeile 2, 3 für Zeile 3 usw. Bei der zweiten Zahl handelt es sich um die Angabe der Spalte. Es fängt bei Spalte A mit der 1 an. Spalte B wäre dann eine 2, Spalte C eine 3 usw.

Ich hoffe, Dir genügen die Erklärungen. Bei weiteren Fragen melde Dich noch mal.

MfG,
coros
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 4 von Marsi

Hallo noch mal ich,

habe festgestellt, dass ich das ganze nicht über die klassichen Optionsfelder lösen kann....

Ich mach das jetzt per Checkbox. Sollte aber am grundsätzlichen Problem nix ändern oder?

Danke noch mal

Markus

Antwort 5 von Masri

Cool,

danke Coros jetzt bin ich ein ganzes Stück weiter!

Jetzt hat sich bei mir nur ein neues Problemchen aufgetan. Wie um himmelswillen kann ich es anstellen Optionsfeldern eine Zelle zuzuordnen. Dabei habe ich folgendes Problem. Ich habe 3 Optionsfelder und je nach dem welches ich anklicke soll eine andere Zelle gefüllt werden....

Ich finde einfach nix in den Eigenschaften und wenn dann nur eine Zelle für alle 3....

Nochmals vielen Dank!

Marsi

Antwort 6 von coros

Hi Marsi,

z.B. so:

Private Sub CommandButton1_Click()
If OptionButton1 = True Then
Range("A1") = "Optionsfeld 1 ist angehakt"
End If
End Sub


Diesen Code hinterlegst Du hinter einen Button, den Du in der UserForm plazieren musst. Beim Klick auf den Button wird, wenn Optionsfeld1 gleich True ist, also angehakt, in Zelle A1 der Text "Optionsfeld 1 ist angehakt" ausgegeben.

Ich hoffe, dass hilft Dir weiter. Bei Fragen, mlede Dich wieder.

MfG,
coros
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 7 von Marsi

Hallo Coros,

ich glaube da haben wir uns eben missverstanden...

ich möchte es so haben, dass wenn ich Optionknopf 1 anklicke Zelle A1 gefüllt wird,

bei Optionsknopf 2 Zelle A5 und bei Optionsknopf 3 Zelle B7 (nur beispiele...)

und einen Zahlenwert in die Zelle schreiben...

Antwort 8 von coros

Hi Marsi,

also ein bißchen Eigenleistung musst Du schon selber bringen. Der von mir gepostete Code war nur ein Beispiel. Wenn es um mehrere Optionsfelder geht, muss der Code entsprechend erweitert werden. Was für einen Zahlenwert? Steht der in einem Textfeld oder ist es immer der selbe. Du musst schon etwas mehr schreiben, wenn Dir geholfen werden soll. Nachfolgender Code schreibt in Zelle A1 eine 1, in Zelle A 5 eine 5 und in B7 eine 7.

Private Sub CommandButton1_Click()
If OptionButton1 = True Then
Range("A1") = "1"
End If
If OptionButton2 = True Then
Range("A5") = "5"
End If
If OptionButton3 = True Then
Range("B7") = "7"
End If
End Sub



MfG,
coros
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 9 von Marsi

Hallo Coros,

ja ich will gerne etwas mehr Eigenleistung zeigen, aber ich glaube wir reden immer noch aneinander vorbei:

hier noch mal ganz ausführlich der Hintergrund meines Problems:

Ich habe ein UserForm zur Auswertung eines Fragebogens erstellt.

Ich mach mal ein Beispiel, dass es deutlicher wird.

Frage A: Magst Du Zitroneneis ja/nein/vielleicht

Dabei sind ja-nein-vielleicht Optionsfelder. Ich bin nun soweit, dass wenn ja angeklickt wird im Tabellenblatt Zelle B5 mit ner 1 gefüllt wird der rest (b6 und b7) mit ner Null....bis hierhin einfach....

So jetzt gehts los: ich habe ja nicht nur einen Fragebogen. also habe ich mir nen CommandButton "daten übernehmen" angelegt. Dieser soll, dass UserForm komplett leeren und die Daten ins Tabellenbaltt übertragen.

Und da hackts jetzt. Weil:

1. Ich weiß nicht mit welchem Befehl ich das UserForm wieder leer krieg
2. es sollten die Felder im Tabellenblatt ausgelesen werden. Und ggf. der Wert 1 (nur bei auswahl des Optionsknopfes) hinzuaddiert werden.

Sprich wenn im Zweiten Bogen wieder einer mit "ja" antwortet soll in zelle B5 der Wert 1 hinzuaddiert werden (aber nur dort und nur wenns Optionsknopf 1 (ja) angeklickt wird)

3. habe ich das Problem, dass wenn ich ausversehen ein Optionsfeld falsch angeklickt habe, die Daten trotzdem schon sofort im Tabellenblatt stehen. Die sollten wirklich erst dann übertragen werden, wenn ich auf den "Daten übernehmen" - Knopf klicke.....

das ist ein ganz schön komplexes Problem und ich glaube mir fehlt total der Ansatz, weil ich noch nicht so viele VBA befehle kenne.... Gibt es eigentlich irgendwo ne Liste wo man nach VBA-Befehlen und deren Nutzen/ Anwendung suchen kann?

Danke Coros, dass Du Dir so viel Zeit nimmst :o)

Marsi

Antwort 10 von coros

So MArsi,

nachfolgender Code wertet die Optionsfelder 1, 2 und 3 aus. Wenn eines angehakt ist, wird der Weert aus der entsprechenden Zelle um die Zahl 1 erhöht. Danach werden alle Optionsfelder wieder abgewählt.

Private Sub CommandButton1_Click()
If OptionButton1 = True Then
Range("B5") = Range("B5") + 1
End If
If OptionButton2 = True Then
Range("B6") = Range("B6") + 1
End If
If OptionButton3 = True Then
Range("B7") = Range("B7") + 1
End If
OptionButton1 = False
OptionButton2 = False
OptionButton3 = False
End Sub


Den Code kopierst Du in das VBA Projekt Deiner Schaltfläche in der userForm.

Ich hoffe, ich bin dem Ziel etwas näher gekommen? Wenn nicht, melde Dich wieder.

MfG,
coros
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 11 von Marsi

Hallo,

ja langsam wirds,

ein kleiner Haken noch, er zählt nicht weiter als zwei kann das an meinem Befehl für das Optionsfeld liegen?

Private Sub OptionButton1_Click()
Range("B5") = 1

End Sub

wahrscheinlich habe ich jetzt geschrieben, dass er immer den wert 1 setzen soll oder?

oder es könnte aber auch daran liegen, dass er sofort wenn ich das optionsfeld 1 betätige schon eine eintragung im Tabellenblatt vornimmt und nicht wartet bis ich auf daten übernehmen geklickt habe....

Antwort 12 von coros

Hi Marsi,

die Codes, die hinter den Optionsfeldern stehen, musst Du natürlich löschen, ansonsten wird immer in die Zelle erst eine 1 geschrieben und nach dem Daten übernehmen Button zu dieser 1 eine weitere 1 dazugezählt. Also, lösche alle Codes, die hinter den Optionsfeldern stehen, das übernimmt der Button fürs Daten übernehmen jetzt.

MfG,
coros
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 13 von Marsi

Hallo Coros,

tausend Dank! Es klappt, so wie ich es wollte :o)

Mal abgesehen davon, dass das VBA jetzt ganz anders aussieht, wie ich mir das vorgestellt hatte :o)

Hab auf jeden Fall ne Menge gelernt und werde es jetzt gleich vertiefen und auf die anderen Fragen meines Bogens ausbauen.

Vielen Dank!

Marsi

Antwort 14 von coros

Hi Marsi,

freut mich, dass jetzt alles zu Deiner vollsten Zufriedenheit ist. Danke auch für die Rückmeldung.

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

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


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: