• 締切済み

Excelの表の項目名(フィールド名)が勝手に書き換えられる

Excelの表の項目名(フィールド名)が勝手に書き換えられる ある日突然Excelの表の項目名(フィールド名)が勝手に書き換えられるようになりました。 これまでの手順は以下です。 1.新規ブックを作成 2.項目名(フィールド名)を手入力 3.データは既存の社内のファイルから「形式を選択して貼り付け」-「値」でコピー 4.「Excelの○意 6 VBAの実践テクニック」の「株式会社や(株)等の表記を統一したい」のいコードをコ ピーしました。コードの内容は以下でした。 ----------------------------------------------------- <内容> Sub 株式会社統一() Dim 置換1 As String Dim 置換2 As String Dim 統一 As String 置換1 = "株式会社" 置換2 = "(株)" 統一 = "(株)" Cells.Replace What:=置換1, Replacement:=統一 Cells.Replace What:=置換2, Replacement:=統一 End Sub Sub 有限会社統一() Dim セル As Range Dim 置換1 As String Dim 置換2 As String Dim 統一 As String Dim 変換文字 As String 置換1 = "有限会社" 置換2 = "(有)" 統一 = "(有)" For Each セル In Selection 変換文字 = セル.Text 変換文字 = WorksheetFunction.Substitute( _ 変換文字, 置換1, 統一) 変換文字 = WorksheetFunction.Substitute( _ 変換文字, 置換2, 統一) セル.Offset(, 2).Value = 変換文字 Next End Sub ----------------------------------------------------- 症状としては例えば「G1」セルの項目名「名前」が「住所」に勝手に変わります。 変わるタイミングは  1.上記マクロを実行  2.上書き保存  3.別ウィンドウを別作業をしたり、化粧直しなどに立つなど「数分」たったあと コードが原因なのか、ウィルスか何か悪いプログラムが使用PCに入っているのかわかりません。 どなたか心あたりのある方がいらっしゃいましたらアドバイスをお願いします。<(_ _)>

みんなの回答

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

こんばんは。 うまくいかないのは、以下のコードの方を、よく理解していないからだと思いますね。よく書籍を読めば分かったはずですが……。 For Each セル In Selection     変換文字 = セル.Text     変換文字 = WorksheetFunction.Substitute(変換文字, 置換1, 統一)     変換文字 = WorksheetFunction.Substitute(変換文字, 置換2, 統一)     セル.Offset(, 2).Value = 変換文字 Next これをみる限りは、該当する単語である・なしに関わらず、右2つ目セルに貼り付けるという意味です。 Sub 有限会社統一R() Const 置換1 As String = "有限会社" Const 置換2 As String = "(有)" Const 統一 As String = "(有)" With Selection  .Replace What:=置換1, Replacement:=統一, MatchByte:=False  .Replace What:=置換2, Replacement:=統一, MatchByte:=False End With End Sub これは、ふたつの種類のコードを一緒にすることも可能です。 Sub 会社統一R() Const 置換1 As String = "有限会社" Const 置換2 As String = "(有)" '全角 Const 統一 As String = "(有)" Const 置換3 As String = "株式会社" Const 置換4 As String = "(株)" '全角 Const 統一2 As String = "(株)" With Selection '範囲を選択  .Replace What:=置換1, Replacement:=統一, MatchByte:=False  .Replace What:=置換2, Replacement:=統一, MatchByte:=False  .Replace What:=置換3, Replacement:=統一2, MatchByte:=False  .Replace What:=置換4, Replacement:=統一2, MatchByte:=False End With End Sub

doutor_001
質問者

お礼

こんばんは。回答ありがとうございます。 分からないのに流用しようとしたのがそもそもの原因だと思います。 もう一度書籍と、回答いただいたのとよく読んでみます。

関連するQ&A

専門家に質問してみよう