Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何根据单元格值的变化触发事件_Vba - Fatal编程技术网

Vba 如何根据单元格值的变化触发事件

Vba 如何根据单元格值的变化触发事件,vba,Vba,我试图用下面的代码实现的是,当range2大于range1 10或更多,并且单元格G2中没有出现X,range1中的值不是该范围内的最低值时,工作表上的某些值将添加到不同工作簿上的不同工作表中。我还需要在大约100个工作表上执行此操作的代码,这些工作表在同一工作簿中同时打开。对于我来说,它的日志数据是从第三方输入到工作表中的,但它只在满足正确的条件时才会记录 它工作得很好,只是在满足数据记录标准后,我必须单击range2中的一个单元格,以便让excel实现满足标准。我需要它在任何工作表上进行更改

我试图用下面的代码实现的是,当range2大于range1 10或更多,并且单元格G2中没有出现X,range1中的值不是该范围内的最低值时,工作表上的某些值将添加到不同工作簿上的不同工作表中。我还需要在大约100个工作表上执行此操作的代码,这些工作表在同一工作簿中同时打开。对于我来说,它的日志数据是从第三方输入到工作表中的,但它只在满足正确的条件时才会记录

它工作得很好,只是在满足数据记录标准后,我必须单击range2中的一个单元格,以便让excel实现满足标准。我需要它在任何工作表上进行更改后立即采取行动,并记录该工作表中的数据。它还需要在所有其他工作表上继续

Worksheet                                                        SelectionChange
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim rng As Range
Dim rng2 As Range
Dim dblMin As Double
Dim val, val1, val2, val3, val4, val5 As Variant


Set rng = Range("ag9:ag100")
Set rng2 = Range("ah9:ah100")
dblMin = Application.WorksheetFunction.Min(rng2)



If Not Intersect(Target, Range("ah9:ah100")) Is Nothing Then


If Range("G2").Value = "X" Then
End

Else
For Each cell In rng
If cell.Value >= cell.Offset(0, -1).Value + 10 And Range("c2") > 4000 And cell.Offset(0, 1).Value <> dblMin Then

Range("G2").Value = "X"


val1 = Range("c2").Value
val2 = Range("c4").Value
val3 = cell.Offset(0, 2).Value
val4 = cell.Offset(0, 1).Value
val5 = Range("f4").Value
val6 = cell.Offset(0, -1).Value
val7 = cell.Value

Workbooks.Open Filename:="C:\Desktop\Log.xlsx"
ActiveWorkbook.ActiveSheet.Range("c2" & Rows.Count).End(xlUp).Offset(1).Value = val1
ActiveWorkbook.ActiveSheet.Range("d2" & Rows.Count).End(xlUp).Offset(1).Value = val2
ActiveWorkbook.ActiveSheet.Range("e2" & Rows.Count).End(xlUp).Offset(1).Value = val3
ActiveWorkbook.ActiveSheet.Range("f2" & Rows.Count).End(xlUp).Offset(1).Value = val4
ActiveWorkbook.ActiveSheet.Range("g2" & Rows.Count).End(xlUp).Offset(1).Value = val5
ActiveWorkbook.ActiveSheet.Range("h2" & Rows.Count).End(xlUp).Offset(1).Value = val6
ActiveWorkbook.ActiveSheet.Range("i2" & Rows.Count).End(xlUp).Offset(1).Value = val7


Exit For
End If
Next
End If
End If
End Sub
工作表选择更改
专用子工作表\u选择更改(ByVal目标作为范围)
变暗rng As范围
变暗rng2 As范围
Dim dblMin为双精度
变型尺寸val、val1、val2、val3、val4、val5
设置rng=范围(“ag9:ag100”)
设置rng2=范围(“ah9:ah100”)
dblMin=Application.WorksheetFunction.Min(rng2)
如果不相交(目标,范围(“ah9:ah100”))则为空
如果范围(“G2”).Value=“X”,则
终点
其他的
对于rng中的每个单元
如果cell.Value>=cell.Offset(0,-1).Value+10,范围(“c2”)大于4000,cell.Offset(0,1).Value dblMin,则
范围(“G2”)。值=“X”
val1=范围(“c2”).值
val2=范围(“c4”).值
val3=单元偏移量(0,2).Value
val4=单元格偏移量(0,1).Value
val5=范围(“f4”).值
val6=单元格偏移量(0,-1).Value
val7=单元格值
工作簿。打开的文件名:=“C:\Desktop\Log.xlsx”
ActiveWorkbook.ActiveSheet.Range(“c2”和Rows.Count).End(xlUp).Offset(1).Value=val1
ActiveWorkbook.ActiveSheet.Range(“d2”和Rows.Count).End(xlUp).Offset(1).Value=val2
ActiveWorkbook.ActiveSheet.Range(“e2”和Rows.Count).End(xlUp).Offset(1).Value=val3
ActiveWorkbook.ActiveSheet.Range(“f2”和Rows.Count).End(xlUp).Offset(1).Value=val4
ActiveWorkbook.ActiveSheet.Range(“g2”和Rows.Count).End(xlUp).Offset(1).Value=val5
ActiveWorkbook.ActiveSheet.Range(“h2”和Rows.Count).End(xlUp).Offset(1).Value=val6
ActiveWorkbook.ActiveSheet.Range(“i2”和Rows.Count).End(xlUp).Offset(1).Value=val7
退出
如果结束
下一个
如果结束
如果结束
端接头

工作表。选择\u Change
对所选单元格中的更改进行操作<代码>工作表。给定目标单元格范围内的任何更改都将触发Change。您需要在每个
工作表
对象中设置,如果希望它们都执行同一组操作,则让它们调用一个函数,在提供的工作表对象上执行操作。将从该工作簿中的任何工作表触发一个工作簿级事件:
Private Sub-Workbook\u SheetChange(ByVal Sh作为对象,ByVal Target作为范围)
参数
Sh
将告诉您处理的是哪张表。