2

これは私がこれまでに持っているものです:

Sub Truncate()
    Application.ScreenUpdating = False

    Dim LastHeader As Long
    Dim MyCell As Range
    LastHeader = Range("IV1").End(xlToLeft).Column

    For Each MyCell In Application.Intersect(Sheet6.UsedRange, Columns("I"))
        MyCell.Value = Right(MyCell.Value, Len(MyCell.Value) - 12)
    Next MyCell

    Application.ScreenUpdating = True

End Sub

このマクロで、列「I」の最初の 12 文字を削除し、残りはそのままにしたいと考えています。(Len(MyCell.Value) - 12) を使用せずに、Right(MyCell.Value, 1) のような数値を入力するだけで、最初の文字を右側に保持したときに、このマクロを他の列で機能させることができました。それだけ。ただし、この列の場合、データの右側の桁数はさまざまであるため、データの左側の指定された数の文字を削除するだけでよいでしょう。

ああ、ところで、私が得るエラーはrun-time error '5'

助けてくれてありがとう:)

4

1 に答える 1

1

Rightほとんどの場合、エントリの 1 つが 12 文字以下であるため、2 番目のパラメータとして 0 または負の数を使用して呼び出すことになります。

12 文字以下の場合にセルを空白のままにしたい場合は、次を試してください。

If (Len(MyCell.Value) > 12) Then
    MyCell.Value = Right(MyCell.Value, Len(MyCell.Value) - 12)
Else
    MyCell.Value = ""
End If
于 2014-08-07T22:49:45.200 に答える