• ベストアンサー

度々マクロについて質問あります

sheetが複数ある人事データがあります。3番目のsheetだけを対象にしたマクロを作成中です。 内容は、 社員コード 姓  名  部署 123    中田 英寿  営業 456 小野 伸二  開発 ・     ・  ・   ・ ・     ・  ・   ・ ・     ・  ・   ・ となっております。 この3番目のsheetだけを対象にして、社員コード・123 の中田をnakataと置き換えるマクロを作成したいです。お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。Wendy02 です。 Match 関数を使って作ってみました。 自分でやってみると、あまり自動的に置換してしまうと、不安が残りましたので、対話モードで、途中・途中で確認が入るようにしました。対話モードがうるさいようでしたら、Msgbox の部分を取り去ってください。 なお、前回と同じ要領で、登録してください。ただ、私のコードは、多少、スピードを優先するために、イレギュラーな部分があります。通常は、Findメソッドで、Replaceするのが一般的かもしれません。 Cell(ret,2) は、B列のことを指しますから、確か、元の表は違う列だったような気がしますから、その部分だけ調整してください。(3箇所) また、シートを開けないで検索する場合は、以下のコードを書き換えないとできません。 Sub ReplaceName()  Dim myCode As Variant, myName As String  Dim ret As Long  'ワークシートの三番目  Worksheets(3).Select  myCode = Application.InputBox("コードを入力してください。", Type:=2)  If myCode = "False" Or myCode = "" Then Exit Sub  myCode = CLng(myCode)  'ワークシート関数で探す  On Error Resume Next  ret = WorksheetFunction.Match(myCode, Range("A:A"), 0)  Err.Clear  On Error GoTo 0  If ret <> 0 Then   myName = Application.InputBox("「" & Cells(ret, 2).Value & "」から" & _   vbCrLf & "変更する名前を入力してください。", Type:=2)   If myName = "False" Or myName = "" Then Exit Sub   If MsgBox(Cells(ret, 2).Value & "を" & _    myName & "に変更してよろしいですか?", vbQuestion + vbOKCancel) = vbOK Then    Cells(ret, 2).Value = myName   End If   Else   MsgBox "コード: " & myCode & "が見つかりません。", vbCritical  End If  ret =0 End Sub

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

#1でもご指摘ですが、この質問は「3番目のシート」という言葉が2回出てきて目立つのですが、何に関する質問なのかぼやけていませんか (1)3番目のシートの指定方法 Index番号やシート名による方法があります。 (2)検索・置換置換のコード (3)3番目のsheetだけを対象にして 普通はいろんなことが1シート内で行うのが多い。 (4)その他(1)-(2)以外の問題 どれでしょうか。

pa-man2go
質問者

補足

書き込みの情報が少なくてすいませんでした。 自分なりに 作成してみましたがどうもうまくいきません。 Sub 変換() Dim Sh1 As Worksheet, Sh2 As Worksheet, Sh3 As Worksheet, Dim r As Range Set Sh1 = Worksheets("1") Set Sh2 = Worksheets("2") Set Sh3 = Worksheets("3") Sh3.Select Set c = Cells.Find(What:="9876543", LookAt:=xlWhole) c.Offset(, 1).Activate ActiveCell.Replace What:="中田", Replacement:="中田英寿" End Sub このように作成しましたがうまくいきません。恐らくsheet3のデータはsheet1から( =1!A100 )といったように値を他のsheetから持ってきてるからではないんでしょうか?

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 >3番目のsheetだけを対象にして 「Worksheets(3)」 でシートを指定すればいいのでは? >マクロを作成中です ということなら、現状の作りかけのコードを提示してみてはいかがですか。 そして、どこで行き詰まっているのかを具体的に書きましょう。