仕事で作ったExcelマクロをなくさないようにメモ。
とあるだぶった項目を、その項目のID同様っていう文字列に変換するやつ
Sub ダブリ項目をホニャ同様に変えるマクロ()
'
' Macro2 Macro
' マクロ記録日 : 2005/5/26 ユーザー名 : UnKnown
'
' Keyboard Shortcut: Ctrl+Shift+T
'
Dim Ypos As Integer
'Eの列Topに移動
Ypos = 6
Do While Ypos <= 1850
' 区分けがBで無ければスキップ
Range("A" + Trim(Str(Ypos))).Select
If ActiveCell.Text = "B" Then
' IDを取得
Range("B" + Trim(Str(Ypos))).Select
Dim sID As Variant
sID = ActiveCell.Text
' 検索文字列を取得
Range("F" + Trim(Str(Ypos))).Select
'現在のセルの中身を読み込む
Dim SelContents As Variant
SelContent = ActiveCell.Text
'検索文字列がNULLではない、"同様"が打ち込まれていない、かつ、処理済みではないなら 置換処理
If SelContent <> "" And Range("AK" + Trim(ActiveCell.Row)).Text <> "レ" And InStr(Range("H" + Trim(ActiveCell.Row)).Text, "同様") = 0 Then
'現在位置を保存
Dim BkSel As Variant
bkAddress = ActiveCell.Address()
'検索範囲を選択して検索
With Range(Selection, "F1:F1850")
Set Result = .Find(What:=SelContent, After:=ActiveCell, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False, MatchByte:=False, SearchFormat:=False)
Result.Select
'検索元に戻ってきたら抜ける
Do While (Not Result Is Nothing) And (bkAddress <> ActiveCell.Address())
'あったら置換
Dim TmpAddress As Variant
TmpAddress = ActiveCell.Address()
'IDがBのものだけ置換
If Range("A" + Trim(ActiveCell.Row)).Text = "B" Then
'ENGLISH(H)
Range("H" + Trim(ActiveCell.Row)).Select
ActiveCell.Font.Color = RGB(0, 0, 255)
ActiveCell = sID + "同様。"
'GERMAN(J)
Range("J" + Trim(ActiveCell.Row)).Select
ActiveCell.Font.Color = RGB(0, 0, 255)
ActiveCell = sID + "同様。"
'FRENCH(L)
Range("L" + Trim(ActiveCell.Row)).Select
ActiveCell.Font.Color = RGB(0, 0, 255)
ActiveCell = sID + "同様。"
'DUTCH(N)
Range("N" + Trim(ActiveCell.Row)).Select
ActiveCell.Font.Color = RGB(0, 0, 255)
ActiveCell = sID + "同様。"
'SPANISH(P)
Range("P" + Trim(ActiveCell.Row)).Select
ActiveCell.Font.Color = RGB(0, 0, 255)
ActiveCell = sID + "同様。"
'ITALIAN(R)
Range("R" + Trim(ActiveCell.Row)).Select
ActiveCell.Font.Color = RGB(0, 0, 255)
ActiveCell = sID + "同様。"
'PORTUGUESE(T)
Range("T" + Trim(ActiveCell.Row)).Select
ActiveCell.Font.Color = RGB(0, 0, 255)
ActiveCell = sID + "同様。"
'RUSSIAN(V)
Range("V" + Trim(ActiveCell.Row)).Select
ActiveCell.Font.Color = RGB(0, 0, 255)
ActiveCell = sID + "同様。"
'KOREAN(X)
Range("X" + Trim(ActiveCell.Row)).Select
ActiveCell.Font.Color = RGB(0, 0, 255)
ActiveCell = sID + "同様。"
'TRADITHONAL-CHINESE(Z)
Range("Z" + Trim(ActiveCell.Row)).Select
ActiveCell.Font.Color = RGB(0, 0, 255)
ActiveCell = sID + "同様。"
'SIMPLE-CHINESE(AB)
Range("AB" + Trim(ActiveCell.Row)).Select
ActiveCell.Font.Color = RGB(0, 0, 255)
ActiveCell = sID + "同様。"
'ARABIC(AD)
Range("AD" + Trim(ActiveCell.Row)).Select
ActiveCell.Font.Color = RGB(0, 0, 255)
ActiveCell.Font.Name = "MS ゴシック"
ActiveCell = sID + "同様。"
'PERSIAN(AF)
Range("AF" + Trim(ActiveCell.Row)).Select
ActiveCell.Font.Color = RGB(0, 0, 255)
ActiveCell.Font.Name = "MS ゴシック"
ActiveCell = sID + "同様。"
Range("AK" + Trim(ActiveCell.Row)) = "レ"
End If
'元の位置に戻る
Range(TmpAddress).Select
'検索Next
Set Result = .FindNext(After:=ActiveCell)
Result.Select
Loop
End With
End If
End If
'列一個進む
Ypos = Ypos + 1
Loop
End Sub