我整天都在寻找这个,但一直没能解决这个问题,所以希望所有人都可以提供帮助:)
目的: 对于单独工作簿中的指定工作表(运行此代码),对于O列中的行编号列表,脚本应运行并突出显示所有相应的行号黄色。
上下文 我是一名审核员,因此我们经常需要从Excel工作簿中随机抽取1000行,然后手动突出显示随机选择。我想自动执行此程序。
具体问题: 让我的循环工作并突出显示黄色,但似乎无法获得“目标位置”的变量。我想让代码运行起来。当我硬编码" Sheet2"时,它适用于工作表2.但即使我尝试使用单元格值作为变量,并在该单元格中放置" Sheet2",它只是赢了工作。我尝试了很多方法,而不是我在下面提到的方法,但我只是整理了当前的代码并粘贴在下面。
最终可交付成果的详细信息(以下所有输入都在单页WB中,工作表名称被称为'随机': - 用户在单元格A5中输入文件夹位置 - 用户在单元格A6中输入文件夹位置 - 用户在单元格A7中输入工作表名称 - 用户将要突出显示的数字列表粘贴到列O中 - 然后用户应点击“突出显示样本”。按钮,然后代码应突出显示目标工作簿中目标工作表的O O黄色列中的所有行号。
代码(从其他帖子修改):
Sub sample()
Dim i As Long, workbk As Workbook, worksh As Worksheet
On Error GoTo Whoa
Application.ScreenUpdating = False
Set worksh = Sheets("Sheet2") 'Hard-coded, this works
'Set worksh = Range("B6").Value 'Doesn't work
'Set worksh = Sheets(Range("pickupsheetname")) 'Doesn't work
With Sheets("RandomList")
For i = 1 To 30
If Not Len(Trim(.Range("O" & i).Value)) = 0 And _
IsNumeric(.Range("O" & i).Value) Then _
worksh.Rows(.Range("O" & i).Value).Interior.ColorIndex = 6 '<~~ Yellow
Next i
End With
LetsContinue:
Application.ScreenUpdating = True
Exit Sub
Whoa:
MsgBox Err.Description
Resume LetsContinue
End Sub
答案 0 :(得分:1)
试试这个,它对我有效(只要单元格中的值是表格的名称):
Set worksh = Sheets(Range("B6").Value)
原因
Set worksh = Range("B6").Value
无效是因为现在worksh正在尝试设置为变体。你仍然需要通过放置你在我的解决方案中看到的那个词和那对括号来将它定义为一个工作表。 :)