• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:文字数を越えた文字列を削除するには?)

文字数を削除する方法は?

このQ&Aのポイント
  • A列とB列にデータが入っていて、B列には2つのパターンの文字が入っています。
  • 問題になっている部分は、このB列に入っているデータを頭から全角15文字以内、半角なら30文字以内に収めるという所です。
  • マクロを作成する際には、2つのパターンに対応する方法が必要です。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.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

saiwai
質問者

お礼

お教えいただきありがとうございます。 無事狙い通りの動きが出来て先に進む事が出来ました。 大変助かりました。本当にありがとうございました!

その他の回答 (1)

  • srx-atx
  • ベストアンサー率41% (12/29)
回答No.1

Mid(myStr1,2,1)で左から2番目の数字を抜いて、 InStrとIfでそれが数字かどうか判定させ、 数字なら例1、数字でないなら例2に対応するように つくればいいんじゃないでしょうか?

saiwai
質問者

お礼

教え頂きありがとうございます。 問題解決までまだまだ力が足りずお恥ずかしい限りです。 一番に回答していただきありがとうございました。

関連するQ&A