VBA的Excel - 从细胞
问题描述:
...我已经寻找这一切的一天,但一直没能解决它定义簿和工作表变量的值,所以希望你们能够帮助:)VBA的Excel - 从细胞
目的: 对于单独工作簿(从中运行此代码)中的指定工作表,对于列O中的行号列表,脚本应运行并突出显示所有对应的行号为黄色。
语境: 我的审计,所以我们经常有从Excel工作簿挑随机样本,与行的1000,然后手动突出的随机选择。我想自动执行此过程。
具体问题: 有我的循环工作,并强调黄色,但似乎无法得到变量为“目标位置”的,我想代码运行工作。当我对“Sheet2”进行硬编码时,它可以在Sheet 2上工作。但是,即使我尝试使用单元格值作为变量,并在该单元格中放置“Sheet2”,它也不起作用。我已经尝试了比以下内容更多的方法,但是我只是整理了当前的代码并粘贴到下面。对于终端交付
详细信息(以下所有输入是在一个单页WB,表名称被称为“随机”: - 用户输入单元格A5 一个文件夹位置 - 用户在小区A6进入文件夹位置 - 用户进入细胞A7 表名称 - 号码的用户糊剂列表用于突出到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
答
试试这个,它为我工作(只要在单元格的值是表的名称):
Set worksh = Sheets(Range("B6").Value)
之所以
Set worksh = Range("B6").Value
不起作用是因为现在worksh正试图设置为变体。您仍然需要将该单词和您在解决方案中看到的那对括号放在一起作为工作表。 :)
对于**具体问题**,你尝试'设置worksh =表(范围( “B6”)。值)'...? – bobajob