標題:
儲存格比對後.導入滑鼠位置問題2
[打印本頁]
作者:
BV7BW
時間:
2021-6-23 16:40
標題:
儲存格比對後.導入滑鼠位置問題2
各位 前輩先進 大家好
有2提問請教.因同一工作表.可請一問題指導
問題一)儲存格比對後.導入滑鼠位置
需求:如何將滑鼠點進"P2"儲存格中.以"P2"儲存格中資料去
比對"K2"儲存格第1筆資料後.
滑鼠位置導入所比對第1筆資料後"E欄"儲存格中.
並將黑色字體轉換成紅色字體.離開後恢復黑色字體
例1)點進1100601001後.比對"K欄".得1100601001第1筆資料位置在"E2".滑鼠位置會在"E2"
例2)點進1100601005後已對"K欄".得1100601005第1筆資料位置在"E18".滑鼠位置會在"E18"
例3)點進1100602005後比對"K欄".得1100602005第1筆資料位置在"E178".滑鼠位置會在"E178"
問題二)小計是否可同步更新
小計"M欄"中以主程式導入資料產生.因"E欄"中需修改數量
導至"H欄"中變化產生資料變異
.而小計是主程式以單號"K欄"總和故無法同步更新
現以"H1"中程式往下拉.可將"E欄"中變化而同步變更.
而小計是以"K欄"單號中筆數為總和.故無法同步更新
需求: 是否可用VBA比對方式.以同筆數"K欄"筆數再以"H欄"筆數總和更改為小計總和
感謝大家指導
[attach]33449[/attach]
作者:
singo1232001
時間:
2021-6-24 05:34
回復
1#
BV7BW
作者:
BV7BW
時間:
2021-6-24 06:09
本帖最後由 BV7BW 於 2021-6-24 06:11 編輯
回復
2#
singo1232001
非常感謝 singo1232001 大大 指導
對於第一問題指導
非常完全圓滿軵和所需.謝謝你
PS:是否可在幫注解.我可加快理解 singo1232001 大大 指導
謝謝
作者:
singo1232001
時間:
2021-6-24 06:31
本帖最後由 singo1232001 於 2021-6-24 06:45 編輯
Private Sub Worksheet_Change(ByVal Target As Range) '儲存格改變時才會觸發 target 就是你原先變更資料的儲存格(不是新選到的)
If Target.Count > 1 Then Exit Sub '選到兩格以上 強制結束(跑下去會出問題,本sub內的提到的"選到的格子"皆為尚未點擊之前選到的格子)
If Target.Column <> 5 Then Exit Sub '選到不是第五欄 強制結束(跑下去會出問題)
If Target.Row = 1 Then Exit Sub '選到第一列 強制結束(跑下去會出問題)
If Target.Value = "" Then Exit Sub '選到格子內無任何資料 強制結束(跑下去會出問題)
Target.Font.ColorIndex = xlAutomatic '顏色變回黑
Set s = ActiveSheet '將工作表縮寫 後面使用縮寫方便
On Error Resume Next '允許發生錯誤 不再跳出提示錯誤警告視窗
f = 0
f = s.Columns("A:M").Find("*", searchdirection:=2).Row '查找最後一列 , "*" 找尋A~M欄非空白有資料的格子 searchdirection:=2由下往上查找
If f = 0 Then Exit Sub '如果f還是0 代表沒資料 不跑
On Error GoTo 0 '不允許發生錯誤 回復成提示錯誤警告視窗
k = s.Cells(Target.Row, "K") '查找該同一列的 k欄值
x = 0 '紀錄加總用的x
For i = 2 To f '迴圈 (從第二列找到 最後一列)
If Str(k) = Str(s.Cells(i, "K")) Then x = x + s.Cells(i, "H") '找到相同的產品編號 將H欄值持續加總到x
Next
'到這邊已經加總完全同一個編號的數量
Application.EnableEvents = False '關閉事件觸發 以免連續影響 其他的觸發事件 selection 與 change
For i = 2 To f
If Str(k) = Str(s.Cells(i, "K")) Then s.Cells(i, "M") = x '找到相同的產品編號 並且將加總好的x放到同一列的M欄
Next
Application.EnableEvents = True '重新開啟事件觸發
Set s = Nothing
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range) '儲存格點選時才會觸發 target 就是你當下點的儲存格(新選到的)
If Target.Count > 1 Then Exit Sub '選到兩格以上 強制結束(跑下去會出問題)
If Target.Row = 1 Then Exit Sub '選到第一列 強制結束(跑下去會出問題)
If Target.Value = "" Then Exit Sub '選到格子內無任何資料 強制結束(跑下去會出問題)
If Target.Column <> 16 Then Exit Sub '選到不是第P欄 強制結束(跑下去會出問題)
Set s = ActiveSheet '將工作表縮寫 後面使用縮寫方便
On Error Resume Next '允許發生錯誤 不再跳出提示錯誤警告視窗
f = 0
f = s.Columns("K").Find(Target.Value, LookIn:=xlValues, lookat:=xlWhole, searchdirection:=1).Row 'searchdirection:=1由上往下查找 只找K欄 找到相同的編號
If f = 0 Then Exit Sub '找不到符合項目 強制結束(跑下去會出問題)
On Error GoTo 0
Application.EnableEvents = False '關閉事件觸發
s.Cells(f, "E").Select '點選 找到的儲存格
s.Cells(f, "E").Font.Color = -16776961 '並將顏色改為紅
SendKeys "{F2}" '並進入修改模式 f2本身為excel的 功能
Application.EnableEvents = True '重新開啟事件觸發
Set s = Nothing
End Sub
複製代碼
回復
3#
BV7BW
作者:
BV7BW
時間:
2021-6-24 06:52
回復
4#
singo1232001
再次謝謝 singo1232001 大大
剛剛只測試問題一).沒注意到問題二)也非常成功
又謝謝你幫注解.我再理解作法
謝謝 singo1232001 大大指導
作者:
准提部林
時間:
2021-6-24 12:41
SelectionChange 會讓P欄沒辦法做更改,
可以改用 BeforeRightClick 雙按左鍵觸發
作者:
准提部林
時間:
2021-6-24 13:18
本帖最後由 准提部林 於 2021-6-24 13:19 編輯
另一方法:
[attach]33454[/attach]
*P欄第2列以下,雙按滑鼠左鍵,執行查詢及修改,並將同一單號範圍加紅色粗框,
修改數量時,M欄產生的公式會自動計算合值.數量輸入錯誤時,使用復原功能即可.
__使用CHANGE事件是無法做復原的
*修改完成後,在P1雙按左鍵,M欄自動變成值(清除公式),並恢復黑色框線
作者:
samwang
時間:
2021-6-24 14:59
回復
7#
准提部林
准大請教一下,那一句用意為何?感謝
Cancel = True
作者:
准提部林
時間:
2021-6-24 16:57
回復
8#
samwang
雙按左鍵, 會進入儲存格為編輯狀態(游標閃爍), 所以要加 cancel=true, 就不會了,
稍改下, 優化M欄合計公式:
[attach]33458[/attach]
作者:
BV7BW
時間:
2021-6-24 20:19
本帖最後由 BV7BW 於 2021-6-24 20:21 編輯
回復
9#
准提部林
感謝 准提部林 老師指導
經測試後運轉順暢
尤其"H欄"及"M欄"改造軵和簡便
可請再增列導入後滑鼠位置將黑色字體轉換成紅色字體
離開後不用恢復.以利得知此筆資料已更改過
另一題外題.原是下一發問問題
如何建立當日客戶重複防呆動作並可允許
我先建立檔案再上傳提問
先謝謝 准提部林 老師
作者:
准提部林
時間:
2021-6-24 20:24
回復
10#
BV7BW
.Item(1).Select
.Item(1).Font.Color = vbRed '加這一行
另有問題, 與本題無相關時, 可另開帖~~不一定有空幫忙...眼睛已快睜不開了
作者:
BV7BW
時間:
2021-6-24 20:41
回復
11#
准提部林
感謝 准提部林 老師
作者:
singo1232001
時間:
2021-6-25 04:25
回復
10#
BV7BW
補充 雙擊跟單擊 都可以自己決定更改
T1儲存格可以改變你的需求
作者:
BV7BW
時間:
2021-6-25 06:14
回復
13#
singo1232001
感謝 singo1232001 大大 指導
謝謝你.雙擊.單擊都很順暢運轉.好像有尋找資料運轉時間快
再次感謝 singo1232001 大大 謝謝你
作者:
BV7BW
時間:
2021-6-25 09:54
回復
9#
准提部林
准提部林 老師 你好
XL10000045-1中
"h欄"公式.是否可直接帶入下一欄
目前是以下拉方式補足.也就是每筆增列資料後就須下拉1次
也可跟"m欄"作法相同
謝謝
作者:
准提部林
時間:
2021-6-25 12:11
回復
15#
BV7BW
雙按P1
If .Row = 1 Then
With Range("e1:n" & R)
.Borders.LineStyle = 1
.Columns(9) = .Columns(9).Value
End With
Range("h1:h" & R).Formula = "=IF(ROW(A1)=1,""(KG)"",IF(F1=""台斤"",(MOD(E1,1)*100/16+INT(E1)),E1)*G1)" '加這一行
作者:
BV7BW
時間:
2021-6-25 13:14
回復
16#
准提部林
謝謝 准堤部林 老師
已可運作.
謝謝
作者:
singo1232001
時間:
2021-6-25 13:41
本帖最後由 singo1232001 於 2021-6-25 13:43 編輯
回復
17#
BV7BW
這個蠻好玩的 幫我突破了一個寫法 也釐清了一些思路
這個寫法我第一次寫 我猜裡面可能會有bug 但目前還不確定
目前的缺點是無法復原
作者:
BV7BW
時間:
2021-6-25 18:07
回復
18#
singo1232001
感謝 singo1232001 大大
提供2版本都可運作情況供參考
希望有助 singo1232001 大大 思路突進
[attach]33461[/attach]
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)