【发布时间】:2023-02-02 05:23:30
【问题描述】:
现在做什么: 有2张“申请表”“价格表” 当我在价格表的 D 列中输入值并点击按钮生成文件时,D 列和 F 列被复制并粘贴到 G27 和 H27 的申请表中。
我想做的是: 制作另一个名为“合并”的按钮,当我点击它时,它应该复制价格表中的总量“G183”并将其粘贴到申请表的 G27 中。
错误:
当我单击生成文件时,它正在正确执行。但是,当我单击清除值并在价格表的 D 列中再次输入值并单击合并时,它并没有复制和粘贴总金额。给我错误 #REF!。我尝试给出单元格的值,但是一旦我点击清除按钮,它就会擦除上面选择的公式并向我显示上述错误。
还有人可以帮助我“当我单击合并按钮时如何在列 H27 中放置一个恒定的 $1 值。 所以基本上,当我单击合并按钮时,它应该从价格表中复制总金额“G183”,并将其以请购单的形式添加到 G27 中,并在 H27 中保持不变的 1 美元。
Option Explicit
Private Sub CommandButton1_Click()
Worksheets("Requisition Form").Range("A27:H34").ClearContents
Dim wb As Workbook
Dim wsData As Worksheet
Dim wsDest As Worksheet
Dim rDest As Range
Set wb = ActiveWorkbook
Set wsData = wb.Worksheets("PRICE SCHEDULE")
Set wsDest = wb.Worksheets("Requisition Form")
Set rDest = wsDest.Cells(wsDest.Rows.Count, "G").End(xlUp).Offset(1)
If rDest.Row < 26 Then Set rDest = wsDest.Range("G27")
With Application
.Calculation = xlCalculationManual
.ScreenUpdating = False
.EnableEvents = False
End With
With wsData.Range("D14:F" & wsData.Cells(wsData.Rows.Count, "D").End(xlUp).Row)
If .Row < 13 Then GoTo CleanExit 'No data
.AutoFilter 1, ">0", xlFilterValues 'Filter on column C for values >0
Intersect(.Worksheet.Range("D:D,F:F"), .Offset(1)).Copy 'Copy filtered values in columns C and E only
rDest.PasteSpecial xlPasteValues 'Paste values only to destination
.AutoFilter 'Clear filter
End With
CleanExit:
With Application
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub
Sub Clearcells()
Worksheets("PRICE SCHEDULE").Activate
Range("D15", "D181").Clear
Sheets("PRICE SCHEDULE").Select
End Sub
Sub Consolidate()
Worksheets("PRICE SCHEDULE").Range("G183").Select
Worksheets("PRICE SCHEDULE").Range("G183").Copy
Worksheets("Requisition Form").Activate
Worksheets("Requisition Form").Range("G27").Select
Worksheets("Requisition Form").Paste
Worksheets("PRICE SCHEDULE").Activate
Worksheets("PRICE SCHEDULE").Range("G27").Select
Application.CutCopyMode = False
End Sub
【问题讨论】:
标签: excel vba autofilter