我想要做的是讓用戶窗體(稱爲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
這是否引發一個錯誤? '設置範圍(「A2:K」&拉斯特羅)。選擇= Rng' –
當我按下播放按鈕/嘗試並雙擊單元格時,它將我帶到第三行代碼並顯示「下標超出範圍」 – user3757447
@ DavidZemens我用我的代碼盡我所能編輯它。當我雙擊包含數據的單元格(可以隨時添加行)時,仍然試圖讓名爲UserComment的用戶窗體顯示出來。 – user3757447