- ベストアンサー
文字数を削除する方法は?
- A列とB列にデータが入っていて、B列には2つのパターンの文字が入っています。
- 問題になっている部分は、このB列に入っているデータを頭から全角15文字以内、半角なら30文字以内に収めるという所です。
- マクロを作成する際には、2つのパターンに対応する方法が必要です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! せっかくコードをお考えのようですが、一例です。 バイト数で追いかけてみてはどうでしょうか? 半角の場合は1バイト・全角の場合は2バイトとなるのを利用します。 Sub Sample1() Dim i As Long, k As Long, cnt As Long, myStr As String For i = 1 To Cells(Rows.Count, "B").End(xlUp).Row If LenB(StrConv(Cells(i, "B"), vbFromUnicode)) > 30 Then For k = 1 To Len(Cells(i, "B")) cnt = cnt + LenB(StrConv(Mid(Cells(i, "B"), k, 1), vbFromUnicode)) myStr = myStr & Mid(Cells(i, "B"), k, 1) If cnt >= 30 Then Exit For End If Next k Cells(i, "B") = myStr cnt = 0 myStr = "" End If Next i End Sub ※ 半角文字が奇数の場合が問題ですが、今回のご質問に関しては 9文字の半角英数+全角の空白 があるというコトですので大丈夫だと思います。 (半角の空白の場合は1文字多く表示されてしまいます)m(_ _)m
その他の回答 (1)
- srx-atx
- ベストアンサー率41% (12/29)
Mid(myStr1,2,1)で左から2番目の数字を抜いて、 InStrとIfでそれが数字かどうか判定させ、 数字なら例1、数字でないなら例2に対応するように つくればいいんじゃないでしょうか?
お礼
教え頂きありがとうございます。 問題解決までまだまだ力が足りずお恥ずかしい限りです。 一番に回答していただきありがとうございました。
お礼
お教えいただきありがとうございます。 無事狙い通りの動きが出来て先に進む事が出来ました。 大変助かりました。本当にありがとうございました!