2017-03-27 3 views
2

ich eine Userform haben, die den letzten Wert bringen wird, die in Spalte E.Erhöhung Textfeld Wert um einen

Das ist gut, aber eingegeben wurde würde ich die Userform wie der letzte Wert um eins erhöht zu zeigen, Dadurch kann der Benutzer den Wert nicht selbst ändern.

z.

„MSA 00-00-0001“ < -Das ist was gezeigt wird, wie dies der letzte Wert in der Spalte ist Jedoch habe ich die Userform möchte MSA zeigen 00-00-0002

Normalerweise würden Sie benutze einfach .Value + 1 Ich gehe davon aus, aber das wird nicht funktionieren wegen der Bindestriche und dem Text im Wertfeld.

Antwort

3

Angenommen, Sie den aktuellen Wert in msa_string laden, können Sie verwenden:

newvalue="MSA " & format(1+val(replace(right(msa_string,10),"-","")),"00-00-0000") 

Wenn es nicht immer MSA_ startet dann könnte man dies tun:

newvalue=left(msa_string,len(msa_string)-10) & format(1+val(replace(right(msa_string,10),"-","")),"00-00-0000") 

uns ing Ihren Ansatz erklären als String mit dem anderen Erklärungen msa_string und dann:

msa_string=Worksheets("Temp").Range("E1").End(xlDown).Value 
critCode.Value = left(msa_string,len(msa_string)-10) & format(1+val(replace(right(msa_string,10),"-","")),"00-00-0000") 
+1

Nizza, ich mag diese Idee +1 –

+0

So wird derzeit das der Code, ** critCode.Value = Worksheets ("Temp"). Range ("E1"). End (xlDown) .Value diesbezüglich ist ** Würde ich Ihren Code danach implementieren? – Mariah

+0

Ich werde meine Antwort bearbeiten .. – CLR

0

Sie können "Cheat" ein wenig, indem die AutoFill verwenden.

Nehmen wir an, Sie haben "MSA 00-00-0001" in Zelle B1, so können Sie die Zelle AutoFill eine Zelle nach unten verwenden, und der Wert in Zelle B2 wird "MSA 00-00-0002" sein. Jetzt können Sie die TextBox1.value gesetzt B2 Zelle und danach löschen Sie einfach den Inhalt von ihm.

-Code

Dim Rng As Range 

Set Rng = Range("B1") 

Rng.AutoFill Destination:=Range(Rng, Rng.Offset(1)) '<-- use AutoFill once cell down 

UserForm1.TextBox1.value = Rng.Offset(1).value 
Rng.Offset(1).ClearContents ' <-- clear the contents of the added cell 
+0

Zeit den Code I in der habe ** UserForm_Initialize ** ist ** critCode.Value = Worksheets ("Temp") Range (. „E1“). End (xlDown) .Value **, das den letzten Wert zieht, die ** ** Temp Arbeitsblatt sollte idealerweise nicht vom Benutzer berührt werden, es sollte nur ein Mittel sein, Daten in geklebt zu haben, durch die Hilfe der Userform – Mariah