- 帖子
- 1447
- 主題
- 40
- 精華
- 0
- 積分
- 1471
- 點名
- 0
- 作業系統
- Windows 7
- 軟體版本
- Excel 2010 & 2016
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 台灣
- 註冊時間
- 2020-7-15
- 最後登錄
- 2025-3-24
|
2#
發表於 2022-11-24 09:49
| 只看該作者
謝謝各位前輩
'轉念!
'1.從資料庫裡帶出需要的資料查看或就可以了!
'不必要資料庫全部帶出資料上了底色,再篩選需要的資料
'2.為了查看使用而上色!沒有必要為上色而上色
'3.至於如果是為了編輯資料,而只帶出資料庫少部分資料!
'就練好技能,按個鈕將有編輯的資料快速反帶回資料庫就好了
以下心得註解請各位前輩指正並指導!謝謝
Option Explicit
Sub 反向帶值_上色_Detail()
Dim Arr, R&, C%, Sh, Shu, reg, Find_Num, i&
Dim x%, y%, Z&, T
'↑宣告變數
T = Timer
Z = 200
'↑設定想要查看資料的細部條件
Set Sh = Sheets("操作表")
'↑令Sh 是工作表
Set Shu = Sheets("反操作表")
'↑令Shu 是工作表
Sh.UsedRange.EntireRow.Delete
'↑操作表 有使用的列全部刪除
R = Shu.UsedRange.EntireRow.Rows.Count
'↑令R是 反操作表有使用的列數
C = Shu.UsedRange.EntireColumn.Columns.Count
'↑令C是 反操作表有使用的欄數
Set reg = CreateObject("VBScript.RegExp")
'↑令reg 是正則
reg.Pattern = "\d+"
'↑正則的規則是被非數字間隔的數字串
reg.Global = True
'↑正則後的資料全部都要!
For x = 2 To C Step 2
'↑設外順迴圈! 從2 到 反操作表有使用的欄數,每次繞回來x+2
For y = 3 To R
'↑設內順迴圈! 從2 到 反操作表有使用的列數
Set Find_Num = reg.Execute(Shu.Cells(y, x))
'↑令Find_Num 是迴圈儲存格執行正則之後的陣列
If Find_Num.Count > 0 Then
'↑如果 Find_Num陣列裡有資料??
If Find_Num(0) Mod Z = 0 Then
'↑如果 Find_Num陣列裡的第個數字 除以200的餘數是0(整除的意思)
Sh.Cells(Find_Num(0) / Z, Find_Num(1)).Interior.ColorIndex = _
Shu.Cells(1, x + 1).Interior.ColorIndex
'↑操作表相對應的儲存格位置上底色
Sh.Cells(Find_Num(0) / Z, Find_Num(1)) = Shu.Cells(y, x + 1)
'↑操作表相對應的儲存格位置輸入值
End If
End If
Next
Next
Sh.Activate
MsgBox Timer - T & " 秒"
End Sub |
|