| 
    
     |  | 19098-123で入力用の略語リストからデータ入力用の 略語を一括置換できないかと相談していたmomoです。
 
 ちゃっぴさんのアドバイスを参考により、マウスで範囲を
 指定できるなど初心者に親しみやすく汎用性の高いマクロを作りました。
 
 しかし、置換対象セルが少ないうちはうまく置換してくれるのですが
 対象セルが数千個に及ぶと置換してくれません。
 私がUBound関数をよく理解できてないからでしょうか?
 
 
 ************************************************
 
 Dim myCell As Range '略語リストの範囲
 Dim myMsg As String, myTitle As String
 
 myMsg = "略語リスト(左列に略語、右列に正式名)を選択して下さい。"
 myTitle = "略語リストの指定"
 
 On Error Resume Next
 
 Set myCell = Application.InputBox(Prompt:=myMsg, Title:=myTitle, Type:=8)
 
 If myCell Is Nothing Then Exit Sub
 
 
 Dim myCell2 As Range '置換範囲
 Dim myMsg2 As String, myTitle2 As String
 
 myMsg2 = "置換範囲を選択して下さい。"
 myTitle2 = "置換範囲の指定"
 
 On Error Resume Next
 
 Set myCell2 = Application.InputBox(Prompt:=myMsg2, Title:=myTitle2, Type:=8)
 
 If myCell2 Is Nothing Then Exit Sub
 
 'Range(myCell2.Address).Select
 
 
 Dim vntTarget  As Variant '置換対象範囲の中のデータ
 Dim vntList   As Variant '略語リストの中の略語
 Dim i As Long, j As Long
 
 
 '略語リストを配列に格納
 vntList = Range(myCell.Address).Value
 
 '置換対象文字列を配列に格納
 vntTarget = Range(myCell2.Address).Value
 
 '置換処理
 For i = 1 To UBound(vntTarget)
 For j = 1 To UBound(vntList)
 vntTarget(i, 1) = Replace$(vntTarget(i, 1), _
 vntList(j, 1), vntList(j, 2), 1, -1, 0)
 Next j
 Next i
 
 '置換した配列を一括出力
 Range(myCell2.Address).Value = vntTarget
 Set rngTarget = Nothing
 
 End Sub
 
 |  |