sam 發問時間: 電腦與網際網路軟體 · 1 0 年前

EXCEL中, 如何能夠寫出『開頭以』的變動巨集程式?

我的需求是, A1輸入13碼國際條碼後, B1會自動擷取前5碼, 巨集必須設定, 當A1>0時, 自動以B1為條件值, 使用『開頭以』功能搜尋D欄, 列出符合的內容, 現在的困難是, 錄『開頭以』搜尋的巨集簡單, 但當A1一直變動時 (B1跟著變), 巨集就無法變更條件值, 知識+曾找到這樣的巨集, 我把它修改如下, 但還是不符合我要的:

********************************************************

Sub Macro1()

'

' Macro1 Macro

' ABC在 2000/1/1 錄製的巨集

'

'

Str1 = ActiveCell.Value

Range("D:D").Select

Selection.AutoFilter

Selection.AutoFilter Field:=4, Criteria1:="=47100*", Operator:=xlAnd

End Sub

*********************************************************

其中的"=47100*" , 就是開頭以的語法, 只不過它必須變成一個以B1為主的變數條件值, 請教EXCEL高手幫忙解惑, 謝謝!

已更新項目:

Dear DoDo:

用Field:=4反而無法達到『開頭以』功能搜尋D欄,我把它改成1,

Selection.AutoFilter Field:=1, Criteria1:=Cells(1, 2), Operator:=xlAnd

這樣反而就可以了,不知道是什麼原因,不過無妨,程式執行沒問題就好,另外,自動擷取我自己用函數即可搞定,但不知要怎麼設定,當A1>0時,可以自動執行此巨集?

Dear Vincent :

我貼上你寫的程式碼,但還是執行錯誤,原因不明,抱歉哦...

1 個解答

評分
  • 東進
    Lv 4
    1 0 年前
    最佳解答

    假設你的檔案已經做到當A1>0時, B1就自動擷取A1前5碼(因為這用函數方式就能達成)那你只要將

    Selection.AutoFilter Field:=4, Criteria1:=Cells(1, 2), Operator:=xlAnd 改成如上方式,就會去讀B1的值(Cells(1, 2)就是B1)

    若如果沒有用函數方式,你就必須再寫個程式去判斷當A1>0時B1會自動擷取前5碼,然以下就同上了

    2007-10-08 09:08:16 補充:

    若你要做A1>0時B1會自動擷取前5碼的程式可以用工作表事件如下

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    去觸動判決式

    有須要再聯絡筆者

    2007-10-08 09:08:54 補充:

    去觸動斷式

還有問題?馬上發問,尋求解答。