Excel 当单元格发生变化时,如何使单元格处于硬编码范围内?
当在工作表的另一列(同一行)中选择状态时,我需要获取一个在硬编码范围内的单元格。目的是让我能够衡量新员工候选人在招聘流程的每个步骤(或状态)中任职的时间 我尝试编写代码,以便在工作簿打开(模块1)后启动宏,然后在使用工作表更改事件(sheet1)更新第J列中的状态后,循环指定的单元格范围(AC3:AQ5000)。列AC到AQ有一个公式,一旦列J更新到与每列Excel 当单元格发生变化时,如何使单元格处于硬编码范围内?,excel,vba,worksheet,hard-coding,Excel,Vba,Worksheet,Hard Coding,当在工作表的另一列(同一行)中选择状态时,我需要获取一个在硬编码范围内的单元格。目的是让我能够衡量新员工候选人在招聘流程的每个步骤(或状态)中任职的时间 我尝试编写代码,以便在工作簿打开(模块1)后启动宏,然后在使用工作表更改事件(sheet1)更新第J列中的状态后,循环指定的单元格范围(AC3:AQ5000)。列AC到AQ有一个公式,一旦列J更新到与每列匹配的状态(=IF($J5=AC$1,IF(AC5“”,AC5,TODAY()),”))。循环引用已关闭 Private Sub Worksh
匹配的状态(=IF($J5=AC$1,IF(AC5“”,AC5,TODAY()),”)
)。循环引用已关闭
Private Sub Worksheet_change(ByVal Target As Range)
Dim Target As Range
Dim MyCell As Range
Set Target = Sheet1.Range("ac3:aq5000")
For Each MyCell In Target
If MyCell.Value > "" Then
MyCell.Copy
MyCell.PasteSpecial Paste:=x1pasteformats
End If
Next MyCell
End Sub
我希望在单元格从空白变为(今天的)日期后,让每一列硬编码日期。到目前为止,我收到了“名称不明确、工作表更改”、“编译错误、预期标识符”等错误,或者什么也没有发生。请尝试以下内容,并根据需要更改
Sub pastespecial()
Dim rangevalue, cellvalue As Range
Set rangevalue = Sheet1.Range("a1:a2")
For Each cellvalue In rangevalue
If cellvalue > "" Then
cellvalue.Copy
cellvalue.pastespecial xlPasteValues
End If
Next cellvalue
End Sub
未能清楚理解目标,并假设以下内容
范围(“ac3:aq5000”)
中的所有单元格,而只需将列AC的所有标题(第1行)循环到AQ。也不需要操作模块1中的任何宏李>
假设输出如下所示
那么代码就是:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Rng As Range, cel As Range, col As Long
Set Rng = Intersect(Range("J:J"), Target)
If Not Rng Is Nothing Then
Application.EnableEvents = False
For Each cel In Rng
For col = 29 To 43
If cel.Value <> "" And cel.Value = Cells(1, col).Value Then
Cells(cel.Row, col).Value = Now()
End If
Next
Next cel
Application.EnableEvents = True
End If
End Sub
Private子工作表\u selection更改(ByVal目标作为范围)
尺寸Rng作为范围,cel作为范围,col作为长度
设置Rng=相交(范围(“J:J”),目标)
如果不是,那么Rng什么都不是
Application.EnableEvents=False
对于Rng中的每个cel
对于col=29至43
如果cel.Value“”和cel.Value=单元格(1,col.Value),则
单元格(cel.Row,col).Value=Now()
如果结束
下一个
下一个细胞
Application.EnableEvents=True
如果结束
端接头
谢谢。你的假设是正确的。我将您的代码粘贴到宏中,收到一个“变量未定义”错误。我添加了'col as Range',然后收到了一个“类型不匹配”错误。“对于col=29至43”行中的两个错误“col”均突出显示。抱歉,编辑了代码。在excel VBA中,表示行数或列数的任何变量都必须声明为Long。很高兴您使用了选项Explicit
,这是一个很好的实践,确保声明了每个变量。我跳过了那个声明。