こんばんは。
Wendy02 です。
#6 さんの言葉を参考にさせていただきました。
>3.=1!A100の式はそのまま生かし表示だけを"中田英寿"にしたいのでしょうか?
3のタイプで作ってみたものの、どうなのかなぁって思います。だいたい、Sheet名が、「1」 とか、「2」とか、特殊なものを作る、その分のエラー処理が増えます。一挙に複雑なコードになってしまいました。
Sub 変換Sample2()
Dim Sh1 As Worksheet, Sh2 As Worksheet, Sh3 As Worksheet
Dim c As Range, myNo As String, mySearch As String, myRep As String
Dim myFormula As String, strSh As String, strRng As String
Dim SheetFlg As Integer
myNo = "9876543"
mySearch = "中田"
myRep = "中田英寿"
Set Sh1 = Worksheets("1") '必要あるのかな?
Set Sh2 = Worksheets("2") '必要あるのかな?
Set Sh3 = Worksheets("3")
Sh3.Select
Set c = Cells.Find(What:=myNo, LookIn:=xlValues, LookAt:=xlWhole)
If c Is Nothing Then
MsgBox myNo & " の番号が見つかりません。"
Exit Sub
End If
With c.Offset(, 1)
If .Value Like "*" & mySearch & "*" Then
If .HasFormula Then
myFormula = .FormulaLocal
SheetFlg = InStr(myFormula, "='")
On Error GoTo ErrHandler
strSh = Mid$(myFormula, 2 + SheetFlg, _
Len(myFormula) - InStr(myFormula, "!") - 2-SheetFlg)
strRng = Mid$(myFormula, InStr(myFormula, "!") + 1)
Worksheets(strSh).Range(strRng).Value = myRep
Else
MsgBox " 番号の隣は、" & mySearch & "ではありません。"
GoTo ErrHandler
End If
End If
End With
ErrHandler:
If Err.Number > 0 Then
MsgBox "数式の取得に失敗しました。", vbCritical
End If
Set Sh1 = Nothing: Set Sh2 = Nothing: Set Sh3 = Nothing
End Sub
補足
いつもありがとうございます。 大変申し訳ないのですが、他のsheetから持ってきてるといううのは ”中田” 名前を( =1!A100 )といった感じにしており、その他のsheetから持ってきたデータを”中田英寿”といった感じに変換したいとおもっています。 すいませんが、よろしくお願いします。