返回列表 上一主題 發帖

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

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

相片輸出價目表.rar (23.49 KB)
在規則名稱下拉選單選取後,如何自動跳到相對應的數量區?

例如:
點一下A2~會出現下拉選單,選取後~如何自動跳到C2?
然後有多筆資料時,會繼續點一下A3,會出現下拉選單~選取後~如何自動跳到C3?

回復 44# c_c_lai

謝謝說明,已經了解問題所在
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

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

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

TOP

看了 ML089, c_c_lai,stillfish00三位的討論,關鍵是舊版Excel開啟新版檔案的控制項是無法使用.
我是2003版就常遇這狀況,解決方式
將新版檔案的資料複製(文字,格式,不含控制項)在一新增舊版活頁簿,(舊版控制項再一一新增上去,程式碼複製到VBA裡)
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 38# c_c_lai

我下載你提供的檔案,Sheet2!A欄 是沒有設定 資料驗證清單,
所以 Worksheet_SelectionChange 判斷所選儲存格沒有設定 資料驗證清單,就沒有作用

重設 資料驗證清單 儲存,在打開仍會存在。

程式中有下面這一段,但都沒有被呼叫,我也沒有仔細研究,所以一直以為VBA應該會將  資料驗證清單 自動設好。
Sub CellValidation()      '  stillfish00 提供
    With Sheets("Sheet2").[A2:A25].Validation
        .Delete
        .Add Type:=xlValidateList, Formula1:="=Sheet1!$A$3:$A$20"
    End With
End Sub

以這例子可能一開始是使用  資料驗證清單 ,後來改用COMBOBOX來替代 資料驗證清單,
讓我一直搞不清楚(VBA功力太弱),既然使用COMBOBOX來當 驗證清單,為何又要設定儲存格的  資料驗證清單,
感覺2個相同功能互疊在一起。
總之謝謝你一直耐心回覆我的問題,感謝
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

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

回復 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

回復  stillfish00


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

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

TOP

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

TOP

        靜思自在 : 【行善要及時】行善要及時,功德要持續。如燒開水一般,未燒開之前千萬不要停熄火候,否則重來就太費事了。
返回列表 上一主題