2014-06-19 37 views
-1

我想要做的是讓用戶窗體(稱爲UserForm1)打開與活動單元格的相應行中的數據已填充到組合框/文本框中通過雙擊行中的任何單元格。這也是一個帶有密碼的保護表。如何通過雙擊動態範圍的單元格中的任意位置來打開用戶窗體?

我已經制作了用戶表單,並且我已經成功地通過VBA編輯器播放按鈕使其從活動行中填充數據。但是,我無法通過雙擊該行中的某個單元格來工作。

其他有用信息:該列表是動態的,隨機添加並縮短,因此需要找到包含數據的最後一行,並將第2行(第1行有標題)的可點擊範圍降低到最後一行包含數據。

這是我嘗試過的代碼,並且失敗了。我知道可能有更合乎邏輯的方式來做到這一點,但我一直沒有成功找出它/在網上找到它。

此代碼已被放置在專用板面積:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 
Cancel = True 
Sheets("Orders").Protect Password:="maintenance", userinterfaceonly:=True 

Dim Lastrow As Integer 
Lastrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row 

Set Range("A2:K" & Lastrow).Select = Rng 

If Target.Address = Rng Then UserForm1.Show 

End Sub 

**編輯** 重申一下,我試圖讓發生:當我雙擊任何行,在其數據(可能有2行,可能有50行,這取決於)我需要一個名爲UserComment的用戶表單彈出,以便用戶可以輸入評論。我需要它始終查找最後一行數據,並將其全部包含在可點擊的範圍內。現在發生的一切本質上都是沒有的。表單保持鎖定狀態,但當我雙擊時,不會顯示「此表已被保護..」,僅當我嘗試鍵入內容時。所以下面的代碼可以識別一些東西,但它不會彈出用戶窗體。我幾乎可以確定它與下面發佈的驗證答案完全相同(不包括工作表名稱和用戶表單名稱中的更改),但由於某些原因,它不起作用。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 
Cancel = True 
Sheets("Open_Orders").Protect Password:="maintenance", userinterfaceonly:=True 

Dim Lastrow As Integer 
Lastrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row 

Set Rng = Range("A2:K" & Lastrow) 

If Not Intersect(Target, Rng) Is Nothing Then UserComment.Show 

End Sub 
+0

這是否引發一個錯誤? '設置範圍(「A2:K」&拉斯特羅)。選擇= Rng' –

+0

當我按下播放按鈕/嘗試並雙擊單元格時,它將我帶到第三行代碼並顯示「下標超出範圍」 – user3757447

+0

@ DavidZemens我用我的代碼盡我所能編輯它。當我雙擊包含數據的單元格(可以隨時添加行)時,仍然試圖讓名爲UserComment的用戶窗體顯示出來。 – user3757447

回答

1

我認爲這會引發一個錯誤,你的賦值語句是反向的。您將對象分配給一個變量,如Rng,而不是相反。

Set Range("A2:K" & Lastrow).Select = Rng

此外,Target.Address僅永遠將是一個單一的單元格範圍,所以你不能做到像等價測試:

If Target.Address = Rng Then UserForm1.Show

試試這個:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 
Cancel = True 
Sheets("Orders").Protect Password:="maintenance", userinterfaceonly:=True 

Dim Lastrow As Integer 
Lastrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row 

Set Rng = Range("A2:K" & Lastrow) 

If Not Intersect(Target, Rng) Is Nothing Then UserForm1.Show 

End Sub 

我已驗證這是在我的G上公開可用的示例工作簿中工作oogle Drive here。雙擊任何黃色突出顯示單元和用戶表單應顯示,如:

enter image description here

+0

編輯:我的表名中有一個錯字。現在它運行,但沒有任何反應,除了有時它將活動單元格的位置更改爲列中的第一個單元格。 – user3757447

+0

什麼運行?你的代碼?或我的代碼?我的代碼中沒有任何內容應該改變任何選擇。請使用我的代碼。 –

+0

我複製並粘貼它。但我認爲只是在我意外地點擊分隔兩個單元格的線條時才改變選擇。所以,當我雙擊包含數據的單元時,沒有任何反應。 – user3757447

相關問題