|
初心者です。どうぞよろしくお願いいたします。
下のようなルールで、文字数によって
処理をしたいと思います。
半角数字の場合(3文字のみ)
は前から2番目の位置にドット
aaa→aa.a
bbb→bb.b
ccc→cc.c
全角アルファベット(2文字まで)
はそのまま
S→S
K→K
LO→LO
以前教えていただいたコードを自分で変えて
本などをみながら作りましたが、
If IsNumeric(vntData(v, 5)) = True Then のところで、
「インデックスが有効範囲にありません」のエラーがでてしまい、
理由がわかりません。
どこが間違えているのか教えてください。
また、画面更新を再開と停止は必要なのでしょうか?
処理完了のメッセージは出さなくてもよいです。
初歩的な質問ですみません。
どうぞよろしくお願いいたします。
Dim vntData As Variant
Set rngList = S2.Cells(2, 5)
With rngList
'データ行数を取得
lngRows = .Offset(65536 - .Row).End(xlUp).Row - .Row + 1
'データが無い場合
If lngRows <= 1 And .Value = "" Then
strProm = "データが有りません"
GoTo Wayout
End If
'データを配列に取得
vntData = .Resize(lngRows + 1).Value
End With
For v = 2 To lngRows
If IsNumeric(vntData(v, 5)) = True Then
If Len(vntData(v, 5)) = 3 Then
vntData(v, 5) = Left(vntData(v, 5), 2) & "." & Right(vntData(v, 5), 1)
End If
End If
Next v
'画面更新を停止
Application.ScreenUpdating = False
With rngList.Offset(, 1).Resize(lngRows)
.NumberFormatLocal = "@"
.Value = vntData
End With
strProm = "処理が完了しました"
Wayout:
'画面更新を再開
Application.ScreenUpdating = True
Set rngList = Nothing
MsgBox strProm, vbInformation
・・・・・・
|
|