630 Aufrufe
Gefragt in Windows 7 von milli24 Einsteiger_in (86 Punkte)
Habe noch ein ähnliches Phänomen bei etwas umfangreicherer Formel Summenprodukt. Es wird immer einer zu wenig gezählt. Hier mal die Formel:

 Worksheets("TabStat").Range("b2").FormulaLocal = "=SUMMENPRODUKT(((ArbTab!$C$2:$C$" & letztezeile & "=""Herr"")+(ArbTab!$C$2:$C$" & letztezeile & _
  "=""Frau""))/ZÄHLENWENN(ArbTab!$B$2:$B$" & letztezeile & ";ArbTab!$B$2:$B$" & letztezeile & "))"

Hier bin ich vollends mit meinem Latein am Ende, und bräuchte Unterstützung. Danke im Voraus, und Gruß milli

22 Antworten

0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo Milli,

ich würde die Anrede in der Userform gar nicht eingeben lassen, sondern z.B. per Combobox auswählen lassen. So kannst du sicher sein, dass die Schreibweise immer die gleich ist.

Natürlich kannst du aber auch händische Eingaben mit einer einfachen Abfrage auf die richtige Schreibweise überprüfen. Anbei ein kleines Beispiel:

Sub beispiel()

Dim strEingabe As String

strEingabe = InputBox("Bitte geben Sie die Anrede (Herr oder Frau) ein:!", "Anrede eingeben")

If strEingabe <> "Herr" And strEingabe <> "Frau" Then
  MsgBox "Die von Ihnen gewählte Anrede ist ungültig"
  Exit Sub
End If

MsgBox strEingabe

End Sub

Gruß

M.O.

0 Punkte
Beantwortet von milli24 Einsteiger_in (86 Punkte)
Bearbeitet von milli24
Danke für die Unterstützung, es ist sicherlich eine Lösung. Bei mir soll aber das Grundprinzip der Eingabe nicht verändert werden, weil es mehrere Personen gibt, die hieran beteiligt sind. Hatte mich da nicht präzise genug aus- gedrückt. Ich möchte lediglich erreichen das wenn ein Fehler in der Eingabe ist, er in irgendeiner Weise angezeigt wird. Habe ebenfalls nicht das Wissen wo man die Prüffunktion geschickter Weise einfügen kann. Wahrscheinlich beim Übertragen der Daten in die "ArbDat", aber wie. Vielleicht kann mir jemand hier einen Weg aufzeigen.  Gruß Milli

Mein Versuch:

Private Sub lstData_Click() ' Eingabe der Daten in USERFORM
Dim rngRow As Range
Dim id As String
clearForm
If lstData.ListIndex >= 0 Then
'die Range wird hier gesetzt mit LIstindex
Set rngRow = wsat.Rows(lstData.ListIndex + 2)

txtPosNr = id
txtPosNr = rngRow.Cells(, colAtPosNr).Value
txtnummer = rngRow.Cells(, colAtNummer).Value
txtAnrede = rngRow.Cells(, colAtAnrede).Value
'  txtAnrede = Format(rngRow.Cells(, colAtAnrede), "Frau" & "Herr")  ' .Value
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo Milli,

gerade wenn mehrere Personen mit der Datei arbeiten, würde ich bei der Anrede die Variante mit der Combobox vorziehen.

Ich habe mal deine Beispieldatei um zwei kleinen Beispieleingabemasken erweitert: Download

Du kannst dir ja mal die beiden Varianten mit und ohne Combobox anschauen.

Gruß

M.O.

0 Punkte
Beantwortet von milli24 Einsteiger_in (86 Punkte)
Vielen dank für die Info. Aber bitte verstehen, ich wollte nicht meine bereits bestehende Eingabemaske verändern müssen. Bin heilfroh das alles bisherige wunderbar funktioniert. Hatte lediglich angenommen, man kann das Datenfeld mit einer Plausibilität der Schreibweise versehen könnte. Wenn Abweichung, dann entsprechender Hinweis.

Wenn das aber nicht machbar ist, dann müssen wir halt damit leben. Gruß Milli
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo Milli,

ich hatte in die Datei zwei Alternativen eingaubt, auch eine, in der die Eingabe in ein Textfeld auf Richtigkeit überprüft wird (Eingabebeispiel 2).

Gruß

M.O.
0 Punkte
Beantwortet von milli24 Einsteiger_in (86 Punkte)
Danke, komme erst jetzt dazu mich mit der Eingabe zu beschäftigen. Hätte eine Frage: Warum erscheint mir "Herr" und "Frau" nicht? Wo habe ich ggf. etwas vergessen? Habe Combobox eingefügt und Code geschrieben, es gibt keine Fehlermeldung. Gruß Milli
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo Milli,

da weder deinen Code noch deine Datei kenne, kann ich nur raten sad.

Wenn du etwas in deiner Userform eingibst, musst du es später in das Tabellenblatt übertragen. Sieh dir hierzu mal in meiner Beispieldatei den entsprechenden Code bei den Button "Daten übernehmen" an:

Private Sub Datenuebernehmen1_Click()
Dim lZeile As Long

With Worksheets("ArbTab")
 lZeile = .Cells(Rows.Count, 1).End(xlUp).Row + 1
 'hier werden die Daten aus der Userform in das Tabellenblatt ArbTab geschrieben
 .Cells(lZeile, 3) = UserForm1.ComboBox1.Value
 .Cells(lZeile, 4) = UserForm1.TextBox1.Value
 .Cells(lZeile, 5) = UserForm1.TextBox2.Value
End With

Unload UserForm1

End Sub

Ansonsten stelle mal eine Beispieldatei mit deiner Userform und deinem Code zur Verfügung.

Gruß

M.O.

0 Punkte
Beantwortet von milli24 Einsteiger_in (86 Punkte)

Versuche es mal mit einem Beispiel als Muster. Will in der bestehenden Eingabemaske das mit der Combobox integrieren.  Gruß Milli

http://supportnet.de/forum/?qa=blob&qa_blobid=9161212283253510544

0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo Milli,

ich habe mal deine Datei angepasst: Download

Gruß

M.O.

0 Punkte
Beantwortet von milli24 Einsteiger_in (86 Punkte)
Danke, wollte den "Einfügebutton ebenfalls ins Feld bringen, was mir aber nicht gelingt. Weil, ich muss die "Auswahl" ja auch in die Tabelle abspeichern. Aber da hackt es, weil das übernehmen vom Einfügebutton nicht funktioniert. Gruß Milli
...