2016-11-16 203 views
0

...我已經尋找這一切的一天,但一直沒能解決它定義簿和工作表變量的值,所以希望你們能夠幫助:)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 
+0

對於**具體問題**,你嘗試'設置worksh =表(範圍( 「B6」)。值)'...? – bobajob

回答

1

試試這個,它爲我工作(只要在單元格的值是表的名稱):

Set worksh = Sheets(Range("B6").Value) 

之所以

Set worksh = Range("B6").Value 

不起作用是因爲現在worksh正試圖設置爲變體。您仍然需要將該單詞和您在解決方案中看到的那對括號放在一起作爲工作表。 :)