1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Excel中的VBA宏:每次划款前从总名册中同步用户数据到当前页

Excel中的VBA宏:每次划款前从总名册中同步用户数据到当前页

时间:2021-08-19 10:03:49

相关推荐

Excel中的VBA宏:每次划款前从总名册中同步用户数据到当前页

独角兽企业重金招聘Python工程师标准>>>

我使用的Office为 Microsoft Office Professional Plus ,我使用的Excel 版本为14.0.4760.1000(32位)。

这段时间遇到了一件事,就是我需要给很多小伙伴打钱,但是每次打给的人又不一样。每次都一遍遍地做一些重复工作,自然不是我的风格,所以我写了下面这个VBA脚本执行我的工作:

1、建立一个Excel,第一个Sheet页取名为“成员名册”,里面一共有三列,第一列为成员名称,第二列为打款方式,第三列为账号

2、将一个新的Sheet页命名为报销单1,先填写前两列,第一列写上成员名称,第二列写上打款金额

3

3、添加宏GenerateDoc,在Excel自带的VisualBasic编辑器中输入下面代码

'从总名单中将对应信息填入新建的名单中'约定各列内容:' 1 - SheetNameList 成员名称-汇款方式-账号号码(需全部填写)' 2 - SheetGenDoc 成员名称-汇款金额-汇款方式(通过本Sub同步)-账号号码(通过本Sub同步)-是否汇讫(默认未汇)Sub GenerateDoc()Dim SheetNameList As WorksheetSet SheetNameList = Sheets("成员名册") '成员名册Sheet页名Dim SheetGenDoc As WorksheetSet SheetGenDoc = Sheets("报销单1") '待同步数据的报销单的Sheet页名,每次需要视情况填写!'从总名单中找出当前名单中的成员的对应信息Dim IsFoundDim i, j As Integeri = 1Do While SheetGenDoc.Cells(i, 1).Text <> ""'MsgBox SheetGenDoc.Cells(i, 1).TextIsFound = Falsej = 1Do While SheetNameList.Cells(j, 1).Text <> ""'MsgBox SheetNameList.Cells(j, 1).TextIf SheetGenDoc.Cells(i, 1).Text = SheetNameList.Cells(j, 1).Text ThenSheetGenDoc.Cells(i, 3).FormulaR1C1 = SheetNameList.Cells(j, 2).TextSheetGenDoc.Cells(i, 4).FormulaR1C1 = SheetNameList.Cells(j, 3).TextSheetGenDoc.Cells(i, 5).FormulaR1C1 = "-"IsFound = TrueEnd Ifj = j + 1Loop'如成员未在总名单中找到,标记为未找到If Not IsFound ThenWith SheetGenDoc.Cells(i, 3).FormulaR1C1 = "未找到"'.Font.Color = -16776961 '文字加红'.Font.TintAndShade = 0 '文字加红End WithWith SheetGenDoc.Cells(i, 4).FormulaR1C1 = "未找到"'.Font.Color = -16776961 '文字加红'.Font.TintAndShade = 0 '文字加红End WithWith SheetGenDoc.Cells(i, 5).FormulaR1C1 = "-"'.Font.Color = -16776961 '文字加红'.Font.TintAndShade = 0 '文字加红End WithEnd Ifi = i + 1Loop'设置最后一列(第四列)为下拉选择列,包括【-】和【汇讫】两个选项SheetGenDoc.Columns("E:E").SelectWith Selection.Validation.Delete.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _xlBetween, Formula1:="-,汇讫".IgnoreBlank = True.InCellDropdown = True.InputTitle = "".ErrorTitle = "".InputMessage = "".ErrorMessage = "".IMEMode = xlIMEModeNoControl.ShowInput = True.ShowError = TrueEnd With'设置各列宽度和颜色With SheetGenDoc.Columns("A:A").ColumnWidth = 10.Columns("B:B").ColumnWidth = 10.Columns("C:C").ColumnWidth = 20.Columns("D:D").ColumnWidth = 20.Columns("E:E").ColumnWidth = 20.Columns("E:E").Font.Color = -16776961.Columns("E:E").Font.TintAndShade = 0End WithEnd Sub

4、执行这个VBA宏后,C、D两列会自动同步打款方式和账号,E列会出现一个下拉选项,包括“-”(未打款)和“汇讫”(已打款)两种选项

使用这个宏,好处是每次收到新名单时,可以很快地根据成员名册的信息,把打款方式和账号同步到一张新的Sheet页,为操作提供了一些便利性。当然这个宏也可以在适当修改或扩展后用于其他一些类似的场合(比如发通知、发传真等),它最主要的作用是减轻一些由人进行的手工操作的工作量,并减少人在进行这些工作时可能发生的错误。

友情提示:和钱有关的事情都不是小事,虽然VBA可以让我们对Excel的处理变得傻瓜化,但在每次打款前还是要和收款人再次确认一下打款方式和账号。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。