2

VBAを使用して入力値に置き換える必要があるラベル付きのExcelテンプレートを使用しています。

それを行うために、私は以下を使用しました:

Cells.Replace What:="&/TDT/&", Replacement:="123456987654321456654444", _
        LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:= _
        True, ReplaceFormat:=False

ただし、この置換を実行した後のセルに表示される値は1,23457E+23です。セル設定でさまざまな形式を使用しようとしましたが、結果を変更せずに、ReplaceFormatパラメーターとSeachFormatパラメーターを変更しようとしました。

なぜExcelがセルのフォーマットを尊重しないのか誰もが知っていますか?

使用される形式は、置き換えられたセルのテキストであり、Officeのバージョンは2007/2010です。必要なのは、交換後に1,23457E+23ではなく123456987654321456654444をセルに表示することです。

4

2 に答える 2

0

あなたができることは、ValueプロパティとFindメソッドを使用して組み合わせて、次のように安全な(またはより安全な)置換を実装することです。

Sub SafeReplace(ByVal What As String, ByVal Replacement As String)
    Set cell = Cells.Find(What:=What, LookAt:=xlPart, MatchCase:=False, SearchFormat:=False)
    Do While Not cell Is Nothing
        cell.Value = Replacement
        Set cell = Cells.FindNext(cell)
    Loop
End Sub

そしてそれを使用します

SafeReplace "&/TDT/&", "123456987654321456654444"

セルの形式を尊重する必要があります。

于 2013-02-01T18:04:56.807 に答える