在我不断追求让工作变得更轻松的过程中,我遇到了另一个障碍。
我真的得到了很大的帮助,在安排一个编号的时间表之前,它看起来像这样:
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:=False发布于 2016-08-15 17:39:07
来自以下内容:
Schedule before numbers been replaced by the green list of employees
这段代码:
Sub FindReplaceAllTest(numOfEmployees As Integer)
Dim n As Integer
Dim fnd As Integer
Dim rplc As String
fnd = 1
Do Until n = numOfEmployees + 1
rplc = ThisWorkbook.Sheets("Duty Roster").Cells(fnd + 1, 17).Value
Range("B2:F54").Select
Selection.Replace What:=fnd, replacement:=rplc, _
LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=False,_
SearchFormat:=False, ReplaceFormat:=False
n = n + 1
fnd = fnd + 1
Loop
End Sub产生了以下结果:
Schedule after numbers been replaced by the green list of employees
非常感谢user3598756为我提供了解决这个问题所需的一切!她/他指出,我在我的代码中编写了不需要的部分,所以我用Do Until Loop替换了我的For Each Loop,还用n替换了sht变量(并根据我的需要重写了它们),以使其正常工作。他还让我意识到,我混淆了列/行引用的位置。在编辑之后,我的代码开始产生我想要的结果。
因此,我的代码现在所做的是将变量n与变量numOfEmployees + 1进行比较,以确保当n > than numOfEmployees时循环停止。确保所有的数字都包含在内。此外,该循环查看我指定的范围内的fnd,并用在变量rplc处找到的单元格中的值替换出该数字的所有实例。
这就是我(我希望是正确的,我是个新手)对我所做的事情的简单回答。
非常感谢你的帮助!
https://stackoverflow.com/questions/38951304
复制相似问题