Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


62123 / 76732 ←次へ | 前へ→

【19217】Re:略語リストからの置換(汎用バージョン)
回答  ちゃっぴ  - 04/10/25(月) 20:27 -

引用なし
パスワード
   こんばんわ、ちゃっぴです。

>しかし、置換対象セルが少ないうちはうまく置換してくれるのですが
>対象セルが数千個に及ぶと置換してくれません。
>私がUBound関数をよく理解できてないからでしょうか?

UBound関数というより、配列まだちょっと理解されていないようですね。

>  '置換対象文字列を配列に格納
>  vntTarget = Range(myCell2.Address).Value

InputBoxで対象セル範囲を選択させていると思いますが、
これを配列に取り込むと、行と列とで2次元の配列になります。

>  '置換処理
>  For i = 1 To UBound(vntTarget)
>    For j = 1 To UBound(vntList)
>      vntTarget(i, 1) = Replace$(vntTarget(i, 1), _
>        vntList(j, 1), vntList(j, 2), 1, -1, 0)
>    Next j
>  Next i

前回では、対象列が1列でしたので、列に対してはループさせていません。
もう、お分かりでしょう?

列に対してもループしてやればいいです。

なお、
>  '置換した配列を一括出力
>  Range(myCell2.Address).Value = vntTarget

これは非常に無駄な記述ですね。myCell2自体がRangeオブジェクトなので

myCell2.Value = vntTarget

とシンプルにしてやりましょう。

1 hits

【19213】略語リストからの置換(汎用バージョン) momo 04/10/25(月) 18:44 質問
【19217】Re:略語リストからの置換(汎用バージョン) ちゃっぴ 04/10/25(月) 20:27 回答
【19232】Re:略語リストからの置換(汎用バージョ... momo 04/10/26(火) 12:06 お礼

62123 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free