- 帖子
- 200
- 主題
- 22
- 精華
- 0
- 積分
- 234
- 點名
- 114
- 作業系統
- Vista
- 軟體版本
- Office2003
- 閱讀權限
- 20
- 性別
- 男
- 來自
- 高雄
- 註冊時間
- 2020-4-14
- 最後登錄
- 2025-6-7
    
|
18#
發表於 2021-3-29 09:12
| 只看該作者
回復 16# samwang
感謝 S 大大先進 勞心指導 謝謝你
現整組程式已完全可理解也可正常運作
先前不能保護動作.以加上鎖定即解除動作.如下
Sub tt1()
Worksheets("工作表2").Unprotect ("0123") '保護工作表2
Dim Arr, i&, N%, T, pos%, pos2%, pos3%
Sheets("工作表2").Range("A4:D1000") = "" '清除工作表2的資料
T = [工作表2!C2] '查找字
Arr = Range([工作表3!G1], [工作表3!D65536].End(3)) '將工作表3資料D~G欄位資料放在數組中
For i = 2 To UBound(Arr)
pos = InStr(Arr(i, 1), T): pos2 = InStr(Arr(i, 2), T)
pos3 = InStr(Arr(i, 3), T) '查詢字確認有無在工作表3的D、E、F欄
If pos > 0 Or pos2 > 0 Or pos3 > 0 Then '有找到時
N = N + 1: Arr(N, 1) = Format(N, "00") '有資料時Arr的第1欄位,自動產生序號
For j = 2 To 4: Arr(N, j) = Arr(i, j - 1): Next '將工作表3資料D、E、F欄資料暫時存放在Arr
End If
Next
If N > 0 Then '確認有無找到資料
With Sheets("工作表2")
.Range(.[A4], .Cells(N + 3, 1)).NumberFormatLocal = "@" 'A欄改為文字格式
.[A4].Resize(N, 4) = Arr '有找到資料救回填至工作表2
End With
End If
Sheets("工作表2").Protect ("0123") '取消保護工作表2
End Sub |
|