返回列表 上一主題 發帖

[發問] 篩選?關鍵字?查詢?

回復 24# emma
  1. If Not Application.Intersect(Range("A2", Range("A2").End(xlDown)), Target) Is Nothing Then
  2. '改成 B2 -[B2].End(xlDown) 間資料列向左位移一欄 (A欄)  
  3. If Not Application.Intersect(Range("B2", Range("B2").End(xlDown).Offset(, -1)), Target) Is Nothing Then
複製代碼
23#
圖1與圖2相對應的資料[宏全]為何會是2筆資料
累積點數,活動狀態 兩欄 是如何判斷!!

TOP

回復 20# GBKEE


    GBKEE版主,不好思意,因為實在找不出錯誤的地方,可以勞動您大駕幫忙看一下哪裡有問題嗎?
    執行測試結果在輸入第一筆及第二筆資料是沒問題,但第三筆之後就會錯亂了,假設第一筆在商品F輸入數量後,第二筆的位置沒限制,但第三筆就一定要在商品F之前(例商品E)才會帶入   Sheet2,在商品F之後(例商品N)就帶不過去Sheet2,為什麼會這樣??
  1. Option Explicit
  2. Private Sub Worksheet_Change(ByVal Target As Range)  '***它是工作表的觸動事件 ***
  3.     Dim Target_Row As String, xi As Integer, xi_Row As String
  4.     If Not Application.Intersect(Range("A2", Range("A2").End(xlDown)), Target) Is Nothing Then
  5.         'Intersect物件
  6.         Target_Row = Target(, 1) & "," & Target(, 2)
  7. 'Join 函數:傳回一個字串,該字串是透過連結某個陣列中的多個子字串而建立的。
  8.         xi = 5
  9.         Do While Sheets("sheet2").Cells(xi, 1) <> ""
  10.            xi_Row = Join(Application.Transpose(Application.Transpose(Sheets("sheet2").Cells(xi, 1).Resize(, 2))), ",")
  11.            If xi_Row = Target_Row Then Exit Sub
  12.            xi = xi + 1
  13.         Loop
  14.         Sheets("sheet2").Cells(xi, 1).Resize(, 2) = Split(Target_Row, ",")
  15.         'Split 函數: 傳回一個陳列索引從零開始的一維陣列,它包含指定數目的子字串。
  16.     End If
  17. End Sub
複製代碼
test2.rar (8.96 KB)

TOP

回復 20# GBKEE


    GBKEE版大您好,想再向您請教一下,如果想將數量依使用者輸入的數量去新增至【查詢】工作表B欄裡,並帶出其他對應或計算出符合的欄位值,
詳如附件,請教該如何做呢?規則在【查詢】工作表中的欄位名稱有加入註解,謝謝您^^

目前附件【查詢】工作表中的欄位是希望可以最終顯示的結果




VBAtest7.rar (14.21 KB)

TOP

回復 20# GBKEE


    謝謝GBKEE版主不厭其煩的回復我問的小問題,我剛剛已試出我要的答案了,非常感謝您的指導~~
  1. Sub 清除_Click()
  2.     Sheet2.UsedRange.Offset(1, 0).Clear
  3.     Sheet1.UsedRange.Range("B4:B60300").Clear
  4.     Sheet1.UsedRange.Range("C1").Clear
  5.     Sheet1.UsedRange.Range("E1").Clear
  6.     Sheet1.UsedRange.AutoFilter Field:=2
  7.     Sheet1.UsedRange.AutoFilter Field:=6
  8. End Sub
複製代碼

TOP

回復 20# GBKEE


    GBKEE版主,我已經有試過了(只是我是用手動的方式試),所以才會這麼詢問,
   我想問的是,能用巨集寫手動去做的這些動作嗎?
    還是只能手動才能讓篩選的隱藏儲存格"全部"清空?操作手動動作的巨集是存在的嗎?謝謝^^

我手動的方式是將
Zip Code欄位的篩選改回「全部」
Scope   欄位的篩選改回「全部」
再到Sheet2點選「清除」的按鈕

↑可以用巨集省略這些步驟嗎?
指令是跟手動的步驟一樣嗎?

TOP

回復 19# emma
這問題你試試就知道

TOP

回復 18# GBKEE


    GBKEE版大,謝謝您,已沒有出錯誤的訊息,再向您請教一下,清除按鈕的↓這段是不是無法清除因篩選而隱藏起來的儲存格
   如果要將被隱藏起來儲存格裡面的值一起清除,是要讓Sheet1把篩選的欄位都放開再執行清空嗎?謝謝您^^
  1.     Sheet1.UsedRange.Range("B4:B60300").Clear
複製代碼

TOP

回復 17# emma
修改如下 Target的第一個Cells(1)
  1. Target_Row = Target(, 2) & "," & Target(, 3) & "," & Target(, 4) & "," & Target(, 5) & "," & Target(, 6)
  2. 改變使用的方式 Target.Cells(1).Value, Target_Row
複製代碼


因為Sheet1.UsedRange..Range("B4:B60300").Clear 的範圍 導致
Private Sub Worksheet_Change(ByVal Target As Range)     
傳回 Target<=>.Range("B4:B60300") 不是單一的儲存格

改變使用的方式  Target.Value 是接收單一的值 **所以型態不同

TOP

回復 14# GBKEE


    GBKEE版大您好,有一個地方想在向您請教一下,就是我在Sheet1插入一欄位於A欄的位置並隱藏,此欄預備為索引欄位用,
    但在使用過程中如未至Sheet2點選【清除】的按鈕前,功能一切正常,但點完按鈕後,就會有錯誤,
    試過幾個方式,但不明白為什麼會有這樣的錯誤,所以想再向您請教一下,
    問題很像是出現在Sheet1.UsedRange.Range("B4:B60300").Clear這段,是因為篩選的關係嗎?
  1. Sub 清除_Click()
  2.     Sheet2.UsedRange.Offset(1, 0).Clear
  3.     Sheet1.UsedRange.Range("B4:B60300").Clear  '這段如果拿掉的話,就不會有問題,但又希望使用者在用的時候B欄可以清除重新輸入想要的筆數
  4. End Sub
複製代碼





VBA學習應用10111-03.rar (861.73 KB)
麻煩您了,謝謝^^

TOP

回復 15# emma


感謝兩位,一位提供想法,一位提供方法...是蠻實用的技巧....多謝...
50 字節以內
不支持自定義 Discuz! 代碼

TOP

        靜思自在 : 知識要用心體會,才能變成自己的智慧。
返回列表 上一主題