【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】

現在、VBAの勉強をしています。
StrconvとLenB関数を使って以下の事をしたいのですが。。。



|    D     |   E   |   F   |

ト ウキョウ
京都 サン
オオ さか

D列の数値を半角にまず直し、そこから空白を削除する。
その次にLENB関数でバイト数を割出、E列に表示する。


以上のことを実行したく、以下のコードを書きました。
しかし、★の部分で実行時エラー5の引数が不正ですというエラーが出てしまいます。
どなたか大変恐縮ですが、助けてください。
よろしくお願い致します。



Private i As Integer

Sub AAA()
Dim wSt As Worksheet: Set wSt = ThisWorkbook.Worksheets("NAME")

For i = 2 To wSt.Range("D1").CurrentRegion.Rows.Count
★ wSt.Range("D" & i) = Replace(StrConv(wSt.Range("D" & i), vbNarrow), " ", "")
wSt.Range("E" & i) = LenB(wSt.Range("D" & i))
Next



End Sub

A 回答 (1件)

こんにちは。



特に、「実行時エラー5」の要素は、コード自体にはありません。エラーが出た時に、どういう値を拾っているかだけです。

むつかしいことですが、エラーの出る可能性としては、「wSt.Range("D" & i)」は、暗黙のプロパティとして、.Value が当てられていますが、完全に、目で見えている文字が取れているとは限らないような気がします。

ただ、
>その次にLENB関数でバイト数を割出、E列に表示する。
どういう意図なのか分かりませんが、VBAで、調べているのは、Unicodeで、ワークシート側は、Shift JISのはずです。その食い違いなども考慮したほうがよいと思います。コード自体は動かしてはいませんが、Unicode は、半角でも、2バイトになります。

VBAの教本には、その辺りは書かれてあるはずですから、もう一度確認してください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報