返回列表 上一主題 發帖

[發問] 求高手解答依條件辨別自動輸入儲存格

[發問] 求高手解答依條件辨別自動輸入儲存格

小弟為使維修資料建檔快速、正確,需求以下涵數設計
       A       B          C         D
1  保固  金額  報價日  同意日
2
3

A欄有下拉選單,分別是:保內、二修、保外、人為
當A2選擇保內or二修,B2  C2  D2會自動填上 -- ,因為不能有金額,也不會報價
當A2選擇保外or人為,B2自動填上”填金額”做為收費提醒,
當B2改填上報價金額時,C2自動填上TODAY日期

附上檔案,請高手指點,感謝!

維修單.rar (7.03 KB)

robin

謝謝大大在百忙中再次指導,
但是這裡用的是Target
   【 Option Explicit
    Sub Ex()  '執行此程式會觸動 Worksheet_SelectionChange(ByVal Target As Range)
        [D5:E6].Select
    End Sub
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)   'Target-> [D56]
        Dim i
        MsgBox Target.Address
        For i = 1 To Target.Count
            MsgBox "Target.Cells(" & i & ") ->" & Target.Cells(i).Address '=> MsgBox Target.(i).Address
        Next
        [B6].Select
    End Sub】

而3樓用了 Target 及 Target(1)

我想問的是Target是不是觸動 Worksheet_SelectionChange的集合(陣列),
而Target(1)是這集合(陣列)的第一個元素?

也就是說何時用Target, 何時用Target(1)? 有可能Target(2)嗎?

TOP

回復 10# GBKEE

天啊!我原來以為這只需要用涵數就能解決,沒想到是巨集,我沒學過,
不過我試過,是可以用,只是原來希望選保內或二修時,B  C  D都填上--,現在只有B填上
太神奇了,只要幾行字就能搞定
就怕我不知所以然,應用到其它地方有困難

但是,應該對懂的人很有用,也是好事!
robin

TOP

版主大大您好,本來以為這用涵數就可以搞定,我不會巨集,但還是試著改看看,增加了原來希望:如果下拉選保內or二修,B2、C2、D2都自動填上--,以便做為不收費提醒,但是改過後怪怪的,下拉選保外or人為,不會照原來的設定那樣,請教我

維修單.rar (16.02 KB)

robin

TOP

回復 9# yen956
  1. Option Explicit
  2. Sub Ex()  '執行此程式會觸動 Worksheet_SelectionChange(ByVal Target As Range)
  3.     [D5:E6].Select
  4. End Sub
  5. Private Sub Worksheet_SelectionChange(ByVal Target As Range)   'Target-> [D5:D6]
  6.     Dim i
  7.     MsgBox Target.Address
  8.     For i = 1 To Target.Count
  9.         MsgBox "Target.Cells(" & i & ") ->" & Target.Cells(i).Address '=> MsgBox Target.(i).Address
  10.     Next
  11.     [B6].Select
  12. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 5# GBKEE
                   【 '***SelectionChange :工作表儲存格 有移動時所觸發的程序 ****
                    '有移動才有觸發請->,先移動儲存格在A欄之外,再移動儲存格到A欄內看看
謝謝再三說明, 收到.
再次請問:
    【Private Sub Worksheet_SelectionChange(ByVal Target As Range)】
所以 Worksheet_SelectionChange後所觸發的第一個Range就是Target(1)是不是?

TOP

本帖最後由 Hsieh 於 2014-2-9 19:25 編輯

回復 1# newlink
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. With Target(1)
  3.   Select Case .Column
  4.   Case 1
  5.   .Offset(, 1).Resize(, 3) = IIf(.Value = "保內" Or .Value = "二修", "--", "填金額")
  6.   Case 2
  7.   .Offset(, 1).Resize(, 2) = IIf(IsNumeric(.Value) And .Value <> "", Date, "")
  8.   End Select
  9. End With
  10. End Sub

  11. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  12. If Target(1).Column = 1 Then '選取A欄
  13. With Target(1).Validation '設定驗證清單
  14.   .Delete
  15.    .Add xlValidateList, , , "保內,二修,保外,人為"
  16. End With
  17. End If
  18. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 5# GBKEE
萬分抱歉ㄝ, 剛剛又試了一下, 已經能照你的設計執行, 萬分感謝,
(最近電腦怪怪的, 剛剛才重新還原, 實在抱歉)

TOP

回復 5# GBKEE
感謝GBKEE大大的回覆,
但是我就是貼在 sheet1 的程式區, 但不管用, 不知哪裡有問題.
(我只是說模組也試過)
檔案如上:

TOP

本帖最後由 GBKEE 於 2014-2-9 18:34 編輯

回復 4# yen956
不要貼在一般模組
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.                 '***SelectionChange :工作表儲存格 有移動時所觸發的程序 ****
  3.                 '有移動才有觸發請->,先移動儲存格在A欄之外,再移動儲存格到A欄內看看
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 謊言像一朵盛開的鮮花,外表美麗,生命短暫。
返回列表 上一主題