返回列表 上一主題 發帖

[發問] 如何讓下拉選單選取後自動跳到儲存格相對應處?

回復 23# ML089
請再仔細回味 #10 的過程圖片說明。
(設計模式與操作模式不能混為一談)

TOP

本帖最後由 c_c_lai 於 2013-11-6 16:42 編輯

回復 25# ML089
原檔案、加上我自個兒新增應用測試的檔、以及你附上的檔
我都一一測試無訛,實在無法明瞭為何你那方不行。
況且 #10 的圖表操作過程,以上三個檔操作過程都一致。
我看你只好去請教 #1 的 av8d 大大了。

TOP

回復 26# ML089

TOP

回復 30# stillfish00
回復 29# ML089
經 stillfish00 提醒,我上網查了一下,有一篇文章可供參考:
Compatibility Between the 32-bit and 64-bit Versions of Office 2010
文章內有關 ActiveX Control and COM Add-in Compatibility 的說明。

TOP

回復 33# ML089
假設你電腦安裝的作業系統是 Win7 64 Bits,
Office 如果為 64 Bits, 則建議你使用 (安裝) 32 位元的 Office,
以免產生支援上的技術問題。同理、如為 2007 亦如上述建議。

TOP

回復  stillfish00


我下載的檔案裡是沒有設 資料驗證清單,所以只要設定了  資料驗證清單 就執行無誤 ...
ML089 發表於 2013-11-7 11:06

理論上,只要在第一次設定了  "資料驗證清單",並同時予以儲存,
關閉後再行觀察 "資料驗證清單" 已否業已存在,便知答案了。

TOP

回復 35# ML089
回復 34# stillfish00
最簡潔快速、正確的解決方式如下,請修正:
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.     Dim StrVdFml As String
  3.    
  4.     On Error Resume Next
  5.         CellValidation                  '  2013/11/7  增修 by  stillfish00

  6.         StrVdFml = Replace(ActiveCell.Validation.Formula1, "=", "")
  7.         ActiveCell.Validation.InCellDropdown = False
  8.     On Error GoTo 0
複製代碼

TOP

回復 36# stillfish00
  1. Sub CellValidation()      '  stillfish00 提供
  2.     With Sheets("Sheet2").[A2:A25].Validation
  3.         .Delete
  4.         .Add Type:=xlValidateList, Formula1:="=Sheet1!$A$3:$A$20"
  5.     End With
  6. End Sub
複製代碼

TOP

回復 41# ML089
別客氣,大家互相學習。
看了你與 stillfish00 大大的訊息,亦讓我從中學習到很多我沒想到的突發狀況,
因我不是原創者 (av8d 大大) 所以只單純的套用現成的程式 (因原本只是協助 av8d 解決他的提問),
竟沒想到會沿生出 ActiveCell.Validation.Formula1 的異狀。剛剛從外頭回到家看了你們的對談內容,
不禁亦想到為何不去使用由 stillfish00 大大提供的 CellValidation() ,在 StrVdFml 判斷之前加入它,
這麼一來管它原本的 ActiveCell.Validation.Formula1 有否資料,於 CellValidation() 執行後,
它便自動把 A2:A25 的資料驗證資料一一寫入 "=工作表1!$A$3:$A$20" 連結參造字串。
如此一來接下來的作業便迎刃而解了。

TOP

回復 41# ML089
A2:A25 的欄位與 ComboBox1:ComboBox 是相互依存的。
欄位資料的資料驗證,一般應用於測試資料及驗證,以確認運作正確無誤。
此處之運用是使用 "事先設定的清單範圍 ("=Sheet1!$A$3:$A$20")" 做為
資料驗證的內存值,提供給後續處理之 ComboBox1 的 LinkedCell、以及
ListFillRange 資訊。 LinkedCell對應的是使用者目前點選的 A 欄位,
譬如目前是位於 A4 欄位,則此處 LinkedCell 對應的內容值為 $A$4,
同時 ListFillRange 對應的內容值則為 Sheet1!$A$3:$A$20。
這時使用者如點選 "下拉符號",ComboBox1 則隨即展開 ListFillRange
對應的欄值 (A2:A25 的欄值內容) 清單供使用者點選。
點選完成後隨即自動將點選欄值寫入到 LinkedCell 對應的欄位內。
總結、應用 CellValidation() 將 "=Sheet1!$A$3:$A$20" 同時寫入至
A2:A25 的 .Validation.Formula1,然後再利用此資料驗證一一帶入到
每次執行的 ComboBox1 中。
(如此、A2:A25 以及 ComboBox1 都可不用事先去做任何設定值的動作,
而全部交由 CellValidation() 去處理、及給值。)
如此說明是否對你有所助益?

TOP

        靜思自在 : 道德是提昇自我的明燈,不該是呵斥別人的鞭子。
返回列表 上一主題