Board logo

標題: [發問] 如何使用VBA將個資隱碼 [打印本頁]

作者: coldedge    時間: 2020-7-22 11:41     標題: 如何使用VBA將個資隱碼

本帖最後由 coldedge 於 2020-7-22 11:44 編輯

各位好
因為個資防範的關係,我想要在報表中「姓名」、「地址」欄位將指定的字元以***來隱碼。雖然使用Replace的函數可以達到效果,可是因為必須在報表在另加一個欄位去取得。
是否有辦法使用VBA,將現有的欄位範圍圈選後,依照指定邏輯打星號隱碼呢?
謝謝大家!

[attach]32316[/attach]
作者: n7822123    時間: 2020-7-23 09:46

回復 1# coldedge

需求

是否有辦法使用VBA,將現有的欄位範圍圈選後,依照指定邏輯打星號隱碼呢?   

自己選範圍,選完後執行巨集,程式如下

Sub test()
Application.ScreenUpdating = False
For Each rg In Selection
  If Len(rg) = 3 Then rg.Value = Left(rg, 1) & "*" & Right(rg, 1)
  If rg Like "*#*" Then For i = 0 To 9: rg.Value = Replace(rg, i, "*"): Next
Next
End Sub

作者: coldedge    時間: 2020-7-23 09:54

回復 2# n7822123


    謝謝您,真得幫了我一個大忙,用短短的語法就解決了我大大的問題。感謝:)
作者: n7822123    時間: 2020-7-23 11:00

回復 3# coldedge

可搭配快捷鍵,讓使用上更方便

[attach]32318[/attach]
作者: coldedge    時間: 2020-7-23 13:45

回復 4# n7822123


謝謝您,這樣操作起來更快了:D :D :D
另外能否再請教一個問題? 因為我發現地址數字若是屬於全形的字元,就會無法打星號。是否有其他的寫法呢? 或是在打星號之前,可再加上一段語法把指定範圍的字元由全形變更為半形? 感謝!
作者: 准提部林    時間: 2020-7-23 15:06

A/B欄同時選取

Sub test111()
With Selection
     For i = 0 To 9
         .Replace i, "*", Lookat:=xlPart
         .Replace StrConv(i, vbWide), "*"
     Next i
     For Each rg In .Columns(1).Cells
         If rg <> "" Then rg.Value = Application.Replace(rg, 2, 1, "*")
     Next
End With
End Sub


==============
作者: coldedge    時間: 2020-7-23 18:29

回復 6# 准提部林


    謝謝版主的幫忙,全形字元無法打星號的問題也解決了,雖然VBA內有些語法,以我目前程度還是看不太懂,但是我會在找書籍努力去研究。真得很感謝大家:)




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)