Vba Excel VBS在同一工作表上依次复制此1
我有一本工作手册,我需要为它创建一个按钮点击,它将每个月运行一次。我需要它以设定的顺序在同一张纸上执行多个程序 到目前为止,这是我的代码,做所有的功能。我需要一些帮助,以正确的方式对它进行排序,以便它按照列表运行,如果你知道一种更简单的编码方式,可能会进行整理Vba Excel VBS在同一工作表上依次复制此1,vba,excel,Vba,Excel,我有一本工作手册,我需要为它创建一个按钮点击,它将每个月运行一次。我需要它以设定的顺序在同一张纸上执行多个程序 到目前为止,这是我的代码,做所有的功能。我需要一些帮助,以正确的方式对它进行排序,以便它按照列表运行,如果你知道一种更简单的编码方式,可能会进行整理 将单元格L3的值增加1 在单元格C7和L7中的日期加上1个月 复制单元格N40并将值粘贴到N42中 复制单元格G36并将值粘贴到G37中 复制单元格G49并将值粘贴到G50中 复制范围N12:N27并将值粘贴到J12:J27中 另存为“付
L3
L7
.xlsm” Private Sub CommandButton3_Click()
Dim mPay As Range
Dim mTarget As Range
Dim cisCurrent As Range
Dim cisTarget As Range
Dim taxCurrent As Range
Dim taxTarget As Range
Dim ttdCurrent As Range
Dim ttdTarget As Range
Dim TTD As String
'Define the ranges
Set ttdCurrent = ws.Range("N40")
Set ttdTarget = ws.Range("N42")
Set mPay = ws.Range("N12:N27")
Set mTarget = ws.Range("J12:J27")
Set cisCurrent = ws.Range("G36")
Set cisTarget = ws.Range("G37")
Set taxCurrent = ws.Range("G49")
Set taxTarget = ws.Range("G50")
'copy and paste special-add
ttdCurrent.Copy
ttdTarget.PasteSpecial xlValues
ttdCurrent.Copy
ttdTarget.PasteSpecial xlValues
mPay.Copy
mTarget.PasteSpecial xlValues
cisCurrent.Copy
cisTarget.PasteSpecial xlValues
taxCurrent.Copy
taxTarget.PasteSpecial xlValues
End Sub
我已经设法想出了一些代码来更改日期,将L3增加1并保存文档
增加L3,并在日期后添加1个月:
Private Sub CommandButton4_Click()
Dim rDate As Range
Dim rDate2 As Range
Set rDate = ActiveSheet.Range("C7")
Set rDate2 = ActiveSheet.Range("L7")
With ActiveSheet
Range("L3").Value = Range("L3").Value + 1
rDate.Value = DateAdd("m", 1, rDate.Value)
rDate.Value = DateSerial(Year(rDate), Month(rDate) + 1, 0)
rDate2.Value = DateAdd("m", 1, rDate2.Value)
rDate2.Value = DateSerial(Year(rDate), Month(rDate) + 1, 0)
End With
End Sub
这是保存为的代码:
Private Sub CommandButton6_Click()
Dim MyPath As String, MyRange As Range, MyDate As Range
MyPath = ActiveWorkbook.Path
Set MyDate = Sheets("SUB CON PAYMENT FORM").Range("L7")
Set MyRange = Sheets("SUB CON PAYMENT FORM").Range("L3") 'with the name of a cell
ThisWorkbook.SaveAs Filename:=MyPath & "\" & "Payment" & " " & MyRange.Value & " " & MyDate.Text & ".xlsm"
End Sub
我们将非常感谢您提供的任何帮助 我在想,你是在要求一种更专业、更高效的编码方式吗?如果是这样的话,也许我能给你一些建议:
选项Explicit
。这是为了确保在使用对象之前声明它Application.screenUpdate=False
以增强宏性能=N40
对单元格(N42)进行编码,以便在更新单元格(N40)时自动复制值。间接地,您将减少代码中变量的声明。因此,性能将得到提高Dim MyWorkbook As Workbook
Dim MyWorksheet As Worksheet
Set MyWorkbook = Workbooks("Book1.xlsm")
Set MyWorksheet = WorkbookTemplate.Sheets("WorksheetName")
而不仅仅是在执行事务/任务时使用它们这就是我想到的,希望我做的一切都是正确的 如果你看到一个错误或更好的编码方式,请让我知道,我一直在学习
Private Sub CommandButton3_Click()
Dim aws As Worksheet
Dim MyPath As String, MyRange As Range, MyDate As Range
Dim rDate As Range, rDate2 As Range
With Application
.ScreenUpdating = False
.EnableEvents = False
.CutCopyMode = False
End With
Set aws = ActiveWorkbook.Sheets("SUB CON PAYMENT FORM")
Set MyRange = Sheets("SUB CON PAYMENT FORM").Range("L3") 'Payment No
Set MyDate = Sheets("SUB CON PAYMENT FORM").Range("L7") 'Date "MMMM YYYY"
Set rDate = ActiveSheet.Range("C7")
Set rDate2 = ActiveSheet.Range("L7")
MyPath = ActiveWorkbook.Path
ActiveWorkbook.Sheets("Details").Rows(2 & ":" & Sheets("Details").Rows.Count).ClearContents 'This clears all data below the header in Details
ActiveWorkbook.Sheets("Global").Rows(1 & ":" & Sheets("Global").Rows.Count).ClearContents 'This clears all data below in Global
With ActiveSheet
Range("L3").Value = Range("L3").Value + 1 'Increases Payment No# by 1
rDate.Value = DateSerial(Year(rDate), Month(rDate) + 1, Day(29)) 'Increases Date by 1 Month
rDate2.Value = DateSerial(Year(rDate), Month(rDate) + 1, 0) 'Increases Date by 1 Month
With aws
.Range("N40").Copy 'Copies total to date Value
.Range("N42").PasteSpecial xlValues 'Pastes total to date Value to Total Last Payment
With aws
.Range("G49").Copy 'Copies Total VAT to Date
.Range("G50").PasteSpecial xlValues 'Pastes Total VAT to Date into Last Payment
.Range("G36").Copy 'Copies This Months Labour
.Range("G37").PasteSpecial xlValues 'Pastes This Months Laboue into Last Payment
End With
With aws
.Range("N12:N27").Copy 'Copies CC Code Gross Value
.Range("J12:J27").PasteSpecial xlValues 'Pastes CC Code Gross Value into Previous
End With
End With
Range("A1").Activate 'Selects Cell A1
End With
ThisWorkbook.SaveAs Filename:=MyPath & "\" & "Payment" & " " & MyRange.Value & " " & MyDate.Text & ".xlsm" 'This saves a new document in our naming convention
End Sub
我看到了您试图做的事情,我看到了您的代码,但我没有看到具体的问题或您陷入困境的地方。请使用特定的question@gtwebb嗨,希望这更有意义。所以你的问题是,一切都很好,但我不知道如何订购?如果它们都需要运行,我会把它们绑在一个按钮上。在您的命令中,单击“仅运行3个您已经编写的常规宏”(调整值、复制单元格、保存工作表)。@GTWEB hi yes只是不确定排序的最佳方式。有更好的编码方法吗?谢谢