在我不断追求让工作变得更轻松的过程中,我遇到了另一个障碍。
我真的得到了很大的帮助,在安排一个编号的时间表之前,它看起来像这样:
Picture of numbered schedule
这些数字中的每一个都对应于右边绿色列表中的一个特定名称,称为“个人”。
现在我想用绿色列表上的名字用一个循环替换这些数字。
我试着这样做,用数字选择单元格的范围,然后循环用列表中的名称替换所有单独的数字:
Sub FindReplaceAllTest(numOfEmployees As Integer)
Dim sht As Worksheet
Dim fnd As Integer
Dim rplc As Variant
fnd = 1
rplc = ThisWorkbook.Sheets("Duty Roster").Cells("17, fnd + 1").Value
For Each sht In ActiveWorkbook.Worksheets
Range("B2:F54").Select
Selection.Replace What:=fnd, replacement:=rplc, _
LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=False, _
SearchFormat:=False, ReplaceFormat:=False
If fnd < numOfEmployees Then
fnd = fnd + 1
ElseIf fnd = numOfEmployees Then
fnd = 0
End If
Next sht
End Sub变量numOfEmployees被收集在前面的SUB中,其中绿色列表中的名称被计数并传递到这个变量中,这是为了创建编号列表的过程。
不幸的是,它没有产生预期的结果。我在下面一行得到错误'1004‘:
rplc = ThisWorkbook.Sheets("Duty Roster").Cells("17, fnd + 1").Value这似乎是由该行中的fnd变量引起的。当我取出fnd并用常规的行引用替换它时,我得到了如下结果:
"Fnd" switched out for "2": "rplc = ThisWorkbook.Sheets("Duty Roster").Cells("17, 2").Value"
即使我在行中放入了"2“,我仍然会得到列表的名称作为替代。
发布于 2016-08-15 16:21:28
正确的sintax如下所示
rplc =ThisWorkbook.Sheets(“值班表”).Cells(17,fnd + 1).Value
这将得到"fnd+1“列和第17行中的单元格的值
此外,您正在遍历工作表,但实际上从未使用过它们,因为您既没有使用" sht“,也没有在任何range对象前加上一个”点“来引用”统治“sht。如下所示:
对于ActiveWorkbook.Worksheets中的每个sht
sht.Range("B2:F54").Replace What:=fnd, replacement:=rplc, _
LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=False, _
SearchFormat:=False, ReplaceFormat:=Falsehttps://stackoverflow.com/questions/38951304
复制相似问题