如何使用vba在Excel中制作蒙版?
我已经在Excel中创build了一个用户表单,可以说3个字段。 name1
, brc1
和tmx1
。 用户可以在字段tmx1
input1到9999 tmx1
任意数字。我希望他点击发送button的时间发送一个屏蔽号码如下0000
到另一个名为data.xls
例如,如果用户在字段tmx1
21我想发送0021的程序,如果他input321发送0321,如果是4个数字的话就可以了,依此类推。
我的部分代码如下所示:
Private Sub cmdSend_Click() Workbooks.Open Filename:="Z:\Tameio\data.xls" Range("A1").Select ActiveCell.End(xlDown).Select lastrow = ActiveCell.Row Cells(lastrow + 1, 1).Value = name1.Text Cells(lastrow + 1, 2).Value = brc1.Text Cells(lastrow + 1, 3).Value = tmx1.Text Range("A1").Select ActiveWorkbook.Close SaveChanges:=True
您可以使用Format
function进行屏蔽。 以这个函数存根为例:
Public Function Masking(Data As Integer) As String Masking = Format(Data, "0000") End Function Sub Test_Masking() Debug.Print Masking(1) Debug.Print Masking(12) Debug.Print Masking(123) Debug.Print Masking(1234) Debug.Print Masking(12345) End Sub
结果:
0001 0012 0123 1234 12345
将其应用于您的案例:
Private Sub CommandButton1_Click() Workbooks.Open Filename:="Z:\Tameio\data.xls" Range("A1").Select ActiveCell.End(xlDown).Select lastrow = 10 ' change this to whatever you prefer Cells(lastrow + 1, 1).Value = name1.Text Cells(lastrow + 1, 2).Value = brc1.Text Cells(lastrow + 1, 3).Value = "'" & Format(tmx1.Text, "0000") Range("A1").Select ActiveWorkbook.Close SaveChanges:=True End Sub
编辑:
基于Mat's Mug的出色build议,这里有一个更多function的格式化function:
Public Function Masking(Data As Integer, TotalLengthWithZeroPad As Integer) As String Masking = Format(Data, String(TotalLengthWithZeroPad, "0")) End Function Sub Test_Masking() Dim totallength As Integer totallength = 10 ' how long will our string's total length be? Debug.Print Masking(1, totallength) Debug.Print Masking(12, totallength) Debug.Print Masking(123, totallength) Debug.Print Masking(1234, totallength) Debug.Print Masking(12345, totallength) End Sub
结果
0000000001 0000000012 0000000123 0000001234 0000012345