excel的vb小问题
发布网友
发布时间:2022-05-21 08:09
我来回答
共5个回答
热心网友
时间:2023-10-20 05:04
在Worksheet_Change事件里写代码。
Private Sub Worksheet_Change(ByVal Target As Range)
MsgBox 1
End Sub
------------------
补充:
本来以为是比较简单的事情,可实际做起来还真是有点复杂,还好总算做出来了。
代码里CommandButton1是我测试的时候添加的一个按钮,用来重置数据的,估计你实际也用的上,所以也保留了。下面是代码,
----代码开始----
Private Const StartRow = 1 '监视列显示数据的起始行,可以修改为实际需要的值(比如从第5行开始,就可以改为5,其他代码都不需要改)
Private Const TraceCol = "E" '监视列,可以修改为实际需要的值(比如改为F在F列显示监视数据)
Private LastRow As Integer '用于保存监视列的最后一行的行数
Private n As Integer '计数器
Private Sub CommandButton1_Click()
Cells(1, 1) = vbNullString '清空源数据单元格内容
Range(TraceCol & StartRow, TraceCol & "65536").Clear '清空整个监视列
LastRow = 0 '保存的最后一行的值清零
n = 0 '计数器清零
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If LastRow = 0 Then LastRow = StartRow '最后一行如果=0则从起始行开始
If Cells(1, 1) <> Cells(LastRow, TraceCol) Then '如果源数据与最后一行监视数据不一致
LastRow = StartRow + n '最后一行的行号等于起始行的行数+计数器
n = n + 1 '计数器累加
Cells(LastRow, TraceCol) = Cells(1, 1) '在监视列的最后一行显示数据
End If
End Sub
----代码结束----
代码可能稍微有些难以理解,但是运行的结果是正确的,请放心。
热心网友
时间:2023-10-20 05:05
alt+F11
插入》模块,粘贴入以下代码:
Sub Macro1()
Calculate
Range("A1").Select
Selection.Copy
Dim rng
Set rng = Range("E65536").End(xlUp).Offset(1)
Dim i
i = rng.Row
Range("E" & i).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
工具》宏》执行宏Macro1
热心网友
时间:2023-10-20 05:05
Private Sub Worksheet_Change(ByVal Target As Range)
Static i As Long
If Target.Row = Range("A1").Row And Target.Column = Range("A1").Column Then
' i = Val(Range("D1").Value)
Range("E1").Offset(i).Value = Target.Value
i = i + 1
' Range("D1").Value = i
End If
End Sub
热心网友
时间:2023-10-20 05:06
'你看这样行不
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static a1_old$, i%
If Range("a1") <> a1_old Then
a1_old = Range("a1")
i = i + 1
Range("e" & i) = a1_old
End If
End Sub
热心网友
时间:2023-10-20 05:06
'模块
Public A1 As Variant
'工作表
Private Sub Worksheet_Calculate()
Dim r As Long
If A1 <> Range("A1").Value Then
r = Range("E95536").End(xlUp).Row + 1
A1 = Range("A1").Value
Range("E" & r) = Range("A1").Value
End If
End Sub