私はExcel上でC列にいくつかの登録番号を入力する必要があるワークシートを持っています。これらの数字は、通常、一度に複数の貼り付けをコピーすることによってユーザーによって挿入されます。コピー元の書式は「000.000.000-00」の形式であることがよくありますが、ワークシートの「00000000000」になります。ドットとダッシュは使用しません。Excel VBA - ユーザーが入力した複数のセルの値を変更するにはどうすればよいですか?
Excel VBAでコードを開発して、ユーザーが登録番号を入力または貼り付けた後、これらのドットとダッシュを自動的に削除しようとしています。私は同じ細胞の中にいることが必要です。コードは次のとおりです。これまでのところ
Private Sub Worksheet_Change(ByVal Target As Range)
Dim SkipEvents As Boolean
If SkipEvents Then Exit Sub
With ActiveWorkbook.Sheets("Staff")
If Not Application.Intersect(Target, Me.Range("C:C")) Is Nothing Then
SkipEvents = True
li = Intersect(Target, Range("C:C")).Row
nl = Intersect(Target, Range("C:C")).Rows.Count
lf = li + nl - 1
For i = li To lf
RegNumb = Range("C" & i).Value
If Len(RegNumb) = 14 Then
Range("C" & i).Value = Left(RegNumb, 3) & Mid(RegNumb, 5, 3) & Mid(RegNumb, 9, 3) & Right(RegNumb, 2)
End If
Next i
SkipEvents = False
End If
End With
End Sub
、コードは、ユーザーのタイプやコピー+は、一度に1つの登録番号を貼り付ける場合は、ドットやダッシュを削除することができます。ただし、一度に2つ以上の登録番号をコピー&ペーストすると、その範囲の最初のセルにのみドットとダッシュが削除され、残りのセルはそのまま残ります。誰かがこの問題で私を助けることができますか?
文字列を反復処理しているように見えます。 'Replace(文字列、"、 ""、 " - "、 "))' – Wilson