2011-10-17 95 views
0

因此,這是一個新的一週,我對改進事物有了新的想法。我所做的部分工作是向各地的各個辦公室和部門發送報告;這些辦事處依次是假設要通過信息和注意不一致。與生活中的一切一樣,事實證明比其他事情更麻煩。爲了讓它更加無痛苦(我希望),我想嘗試一些與他們不同的東西。我想要做的是建立在工作表中的東西,個人接受做兩件事情:突出顯示點擊單元格並轉發到新單元格

  1. 首先,我想設置工作表,這樣當用戶 點擊了一個小區的小區突出顯示;
  2. 其次,在單元格高亮顯示之後,活動框將自動轉移到行的末尾的「評論」框 ,用戶在其中輸入他們的評論以確定爲什麼 問題中的單元格被突出顯示;第三,假設有人會犯錯,並突出顯示 我想添加附加功能 ,如果用戶選擇一個突出顯示的單元格,那麼它將清除單元格中的突出顯示。

可能嗎?建議?謝謝!

回答

3

JMax在識別缺陷方面是正確的,因爲如果它每次單擊它時都會更改顏色並選擇一個註釋單元格,您將無法編輯該單元格。解決此問題的最佳方法是僅在雙擊時更改顏色。我還要定義選擇的行/列,看看他們屬於一個表的範圍內(而不是使用Application.Intersect)內,不過這只是個人喜好

喜歡的東西...

Private Sub Worksheet_Beforedoubleclick(ByVal target As Range, cancel As Boolean) 

Application.EnableEvents = False 

Dim TargRow as Variant 
Dim TargCol as Variant 

TargRow = target.Row 
TargCol = target.Column 

'Define Header, FirstCol, CommentCol, LastCol as required to define your table/range where you wish these changes to be made. CommentCol is the cell in which comments should be made 

    If TargRow > Header And TargCol > FirstCol and TargCol < LastCol Then 
     If Cells(TargRow,TargCol).Interior.ColorIndex <> -4142 Then 'change color as required to match background 
     Cells(TargRow,TargCol).Interior.ColorIndex = 3 'change color as required; this makes them red 
     Cells(TargRow,CommentCol).Select 
     Else 
     Cells(TargRow,TargCol).Interior.ColorIndex = -4142 'match color from start of IF statement 
     End If 
    End If 

Application.EnableEvents = True 
End Sub 

請注意,我們禁用事件,因此我們不能通過選擇不同的單元來觸發其他代碼。在實現Worksheet_SelectionChange事件時,這是絕對必要的,而在BeforeDoubleClick事件中更是如此,

考慮如何觸發宏以及它們如何爲用戶提供靈活性非常重要。這Excel help video提供了一個合理的介紹

+0

我有一點時間再次工作,我能夠得到突出顯示比預期容易得多。我現在有一個突出的是: '私人小組Workbook_SheetBeforeDoubleClick(BYVAL SH作爲對象,BYVAL目標作爲範圍,取消爲布爾) 如果Target.Interior.ColorIndex = xlNone 然後Target.Interior.ColorIndex = 6 elseif的目標.Interior.ColorIndex = 6 Then Target.Interior.ColorIndex = xlNone End If Cancel = True End Sub' 這就是我所要做的,就是突出顯示(或刪除高亮顯示)單元格。 – Jon

+0

如果將代碼放在工作表本身中,則不需要聲明'Sh as Object'...那麼在更長的示例中識別目標行的原因是我們可以選擇該行中的註釋單元格。其餘的目的是使代碼健壯,可能並不是必需的 –

+0

好吧,顯然我在這裏做錯了什麼。我放棄了評論中的內容,並將其插入工作表中,而不是放在工作簿中。我假設我正在搞定義事情,所以我需要爲此工作。 – Jon

1

你可以什麼(也許有)使用的是Worksheet_SelectionChange事件過程:

MSDN它是如何工作。
你也應該看看Chip Pearson的page about events

當用戶更改選擇,你應該檢查是否需要在是在正確的細胞(使用Intersect),如果是,改變Target背景顏色和改變ActiveCell到一個地方,你應該把意見。
順便說一句,你可以檢查移動到另一個單元格之前,單元格是否高亮顯示。

這種方法的主要缺點是,它會每次移動至Excel中選擇用戶點擊上相應的小區。解決辦法是告訴用戶使用Scroll Lock鍵,並用箭頭導航。有關它的工作方式,請參閱this link

相關問題