Frage : Excel/VBA/Userform

Ich habe ein userform, das Daten eingegeben und die Informationen zu den Zellen auf Blatt 1. geschrieben. Die folgenden Felder sind erfasste Informationen, Datum, Kurs, Dauer, Trainer, Identifikation, erster Vorname, Nachname, Status. Dieses Teil alles bearbeitet fine.

The Problem, das ich bin mit einem kleinen Abschnitt habe, der Entwicklungsart genannt. Ich muss Entwicklungsart eingeführt werden, falls gewählt und schreibe, um 1 „neues Material“, „vorhandenes Material“, „anderes“, abhängig von dem Wahlknopf zu bedecken, der ohne die Anforderung des Angestellten gewählt, einzeln aufführe den Abschnitt, der ergänzt.

, in dem Augenblick als dieses Teil nur arbeitet, wenn der Angestelltsonderkommandoabschnitt auch ergänzt. Ich kann ihn nicht an gelangen, um anders zu arbeiten, aber bekannt gegeben meinen Code meinen. Jemand half mir mit diesem und ich addierte dieses Teil innen, also bin ich sicher, dass ich es nicht tat, das, correctly.

Here mein Code ist und hervorgehoben in fettem ist, wo die Mühe I think.

Private VorcmdOk_Click ()
schwaches RowCount als Long
schwaches ctl als Control
schwaches ctlName als String
schwaches ctlNumber als String
schwaches ctlField da String

' Überprüfungs-Benutzer input
ist, wenn Me.txt Date.Value = "" Then
MsgBox „bitte ein Datum erreichen. “, vbExclamation, „Trainings-Maschinenbordbuch "
Me.txt Date.SetFocus
Ausgang Sub
Ende If
, wenn Me.cboCourseName.Value = "" Then
MsgBox „bitte Kurs-Namen eintragen. “, vbExclamation, „Trainings-Maschinenbordbuch "
Me.txt Date.SetFocus
Ausgang Sub
Ende If
, wenn Me.txt Duration.Value = "" Then
MsgBox „bitte Dauer in Stunden eintragen. “, vbExclamation, „Trainings-Maschinenbordbuch "
Me.txt Date.SetFocus
Ausgang Sub
Ende If
, wenn Me.cboTrainer.Value = "" Then
MsgBox „bitte Kostenstelle wählen. “, vbExclamation, „Trainings-Maschinenbordbuch "
Me.txt Date.SetFocus
Ausgang Sub
Ende If
, wenn nicht IsNumeric (Me.txtDuration.Value) Then
MsgBox „die Dauer eine Zahl sein muss. “, vbExclamation, „Trainings-Maschinenbordbuch "
Me.txt Date.SetFocus
Ausgang Sub
Ende If
, wenn nicht IsDate (Me.txtDate.Value) Then
MsgBox „der Datumkasten ein Datum enthalten muss. “, schreiben vbExclamation, „Trainings-Maschinenbordbuch "
Me.txt Date.SetFocus
Ausgang Sub
Ende If

' Daten zum worksheet
„erhalten folgendes vorhandenes row
RowCount = Arbeitsblätter („Sheet1“). Range („A1“). CurrentRegion.Rows.Count

“ kommen die Details für jede Linie mit Daten (nicht freier Raum) in ein array
„schreiben dann alle Felder zur folgenden Linie using „rowCount "

für jedes ctl in Me.Controls

ctlName = verließ (ctl. Name, 12)“ erhalten das Feld name

wenn ctlName = „txtFirstName“ Then
wenn ctl. Das Wert <>, das Then

ctlNumber = vbNullString ist, ersetzen (ctl. Name, „txtFirstName“, "") „erhalten das Feld number

“ schreiben in allgemeines/allgemeines fields
mit Arbeitsblättern („Sheet1“). ()
Range „Trainer details
. Versatz (RowCount, 0). Wert = DateValue (Me.txtDate.Value)
. Versatz (RowCount, 1).Value = Me.cboCourseName.Value
. Versatz (RowCount, 2).Value = Me.txt Duration.Value
. Versatz (RowCount, 3).Value = Me.cboTrainer.Value

“ Entwicklung details
wenn FirstOptBtn = zutreffendes Then
. Versatz (RowCount, 9).Value = „neues materielles "
ElseIf SecondOptBtn = zutreffendes Then
. Versatz (RowCount, 9).Value = „vorhandenes materielles "
ElseIf ThirdOptBtn = zutreffendes Then
. Versatz (RowCount, 9).Value = „anderes "
Else
„nothing
/>“ Datum entered
. Versatz (RowCount, 10).Value = Format (jetzt, „dd/mm/yyyy hh: nn: SS“)
Ende With


„ausarbeiten die gegenwärtige Feldzahl ge und schreiben Rest Daten line
ctlField = „txtEmployeeID“ u. trimmen (ctlNumber)
Arbeitsblätter („Sheet1“). Range („A1“). Offset (RowCount, 4).Value = Me.Controls (ctlField). Value
ctlField = „txtFirstName“ u. Ordnung (ctlNumber)
Arbeitsblätter („Sheet1“). Range („A1“). Offset (RowCount, 5).Value = Me.Controls (ctlField). Value
ctlField = „txtLastName“ u. Ordnung (ctlNumber)
Arbeitsblätter („Sheet1“). Range („A1“). Offset (RowCount, 6).Value = Me.Controls (ctlField). Value
ctlField = „cboStatus“ u. Ordnung (ctlNumber)
Arbeitsblätter („Sheet1“). Range („A1“). Offset (RowCount, 7).Value = Me.Controls (ctlField). Value
ctlField = „cboDepartment“ u. Ordnung (ctlNumber)
Arbeitsblätter („Sheet1“). Range („A1“). Offset (RowCount, 8).Value = Me.Controls (ctlField). Value
“ Stufensprung-Reihenzählimpuls für jedes neue Angestelltdaten line
RowCount = RowCount + 1

Ende If
Ende If

folgende ctl
Call clear_form
MsgBox „Update abschloß“, vbInformation + vbOKOnly, „komplettes "
End Sub

also, das es Datum schlingt, Kurs, Dauer, Trainer, entsprechend der Zahl den Angestellten l, die im Angestelltsonderkommandoabschnitt eingeführt. dieses Teil adaequat ist, während stated.
Hope dieses sinnvoll ist und jede mögliche Hilfe, die Entwicklungsart Einzelheit zu erhalten groß sein!
Cheers
 

Antwort : Excel/VBA/Userform

Es tut mir leid in dem Augenblick als wir die unzulänglichen Informationen, zum Ihres Codes völlig auszuprüfen haben, und es ist nicht genau frei, was Sie tun.

Ich verstand nicht Ihre vorletzte Anmerkung völlig, aber Verfahren (Unterseeboote oder Funktionen) arbeiten normalerweise noch, wenn sie zwischen Codemodulen geklebt. Blöcke des Codes innerhalb von den Verfahren benötigen mehr Sorgfalt.

Bezüglich Ihrer letzten Anmerkung: Wenn Sie glauben, dass Ihre ursprüngliche Frage beantwortet worden, dann sein es am besten, die Frage zu schließen und ein Neues aufzuwerfen. Andernfalls können Sie die Position im Augenblick erklären?



Weitere Lösungen  
 
programming4us programming4us