我有一个Excel
第1张
第2页
工作表1的值=> F5 =>'50'=>在工作表2中被引用=> E4 =>'50'
当我在工作表1中输入值代替F5时=>值在工作表2中发生更改=> E4 =>自动
使用下面的代码将数据打印多次 我的代码
模块:mac
Dim ws As Worksheet
Dim rDest As Range
Dim lCount As Long
Dim sValue As String
Set ws = ThisWorkbook.Sheets("Sheet2")
Set rDest = ws.Range("I2")
With ws.Range(rDest, ws.Cells(ws.Rows.Count, rDest.Column).End(xlUp))
If .Row >= rDest.Row Then .ClearContents
End With
lCount = Val(ws.Range("E4").Value)
sValue = ws.Range("E8").Value
If lCount > 0 Then rDest.Resize(lCount) = sValue
End Sub
第1张代码:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Sheets("Sheet1").Range("F5"), Target) Is Nothing Then
Call mac
End If
End Sub
这是输出
赞一下下面的输出:
https://paste.pics/494c856d2908a83ca031ee20bb706a09
我的上述代码根据上述输出可完美工作 但是随着其中的一些缺陷
假设
条件1:
如果输入的值为'50'=>,则“ I”和“ J”列中的数据将被打印50次=>正确[Perfect]
条件2:
如果输入的值为'60'=>,那么库伦“ I”和“ J”中的数据将追加 之前的数据为“ 50” => 50 + 10 => 60 =>这是正确的[完美]
条件3:
假定“ I:J”列已作为DATA =>到范围'60' 如果输入的值小于“ 60”(如“ 30”),则更新仅应在“ I:J”列中进行30次,但应打印数据,但没有任何反应 如果范围小于旧值,则会发生附加操作,但不会清除数据
应该有类似的机制
如果Count为50 =>打印=> I,J
如果Count大于50 =>附加I,J
如果Count小于50 =>清除I,J列,然后=>填充I,J列
我如何实现此机制?
答案 0 :(得分:0)
据我所知您的代码可以正常工作... 我明白您的要求。查看注释,了解对您的代码所做的仅两项更改:
Sub mac()
Dim ws As Worksheet
Dim rDest As Range
Dim lCount As Long
Dim sValue As String
Set ws = ThisWorkbook.Sheets("Sheet2")
Set rDest = ws.Range("I2")
With ws.Range(rDest, ws.Cells(ws.Rows.Count, rDest.Column + 1).End(xlUp)) 'Add another column to your selection here
If .Row >= rDest.Row Then .ClearContents
End With
lCount = Val(ws.Range("E4").Value)
sValue = ws.Range("E8").Value
If lCount > 0 Then rDest.Resize(lCount, 2) = sValue 'Resize to 2 columns instead of the default 1.
End Sub
PS:如果我误解了您的查询,请告诉我。