トップページ⇒bsoft
10コメント4KB

EXCEL97:半角を全角に高速処理したいんですが、、、

■ このスレッドは過去ログ倉庫に格納されています
0001tmpNGNG
VBAで一つづつ変換してるのですが、あまりにデータ量が多すぎる
ため、処理時間がかかりすぎてしまうので、置換でどうにか出来ない
物かと考えたんですが、、、
VBAでも高速処理できるなら一向に構わないので、どなたか分かる方
いらっしゃいましたら教えてください。
ちなみに現在の処理方法はこんな感じです。

Function Zenkaku()
Dim i
Dim f
Dim HStr(2)

HRow = RowCheck()'行数を取得

For i = 2 To HRow
For f = 0 To 1
Cells(i@` f + 2).Activate
HStr(f) = StrConv(CStr(ActiveCell.Cells.Value)@` vbWide)

ActiveCell.Cells.Value = HStr(f)
Next f
Next i

End Function
0002>1NGNG
>For f = 0 To 1
>Cells(i@` f + 2).Activate
>HStr(f) = StrConv(CStr(ActiveCell.Cells.Value)@` vbWide)
>ActiveCell.Cells.Value = HStr(f)

いちいちactivateしているから遅いんじゃないの。

For f = 2 To 3
Cells(i@` f)=StrConv(CStr(Cells(i@` f))@` vbWide)

この方が命令数少なくて速いはず。

けど置換の方が速いと思うよ。

0003名無しさんNGNG
関数使ったら
何でもVBAじゃないよ
0004tmpNGNG
>2さん

レスどうもです。

>いちいちactivateしているから遅いんじゃないの。

おっしゃる通りですね。
あまりのチンパンぶりにお恥ずかしい限りです。

で、折角ソースコードまで書いていただいたんですが、某所で質問した
ら10分くらいで解決しました。
そこによるとFOR文を2連続で使わないでセルの直接操作もやめて配列を
使い一気に変換して書きこむというものだったので思った以上に高速化
出来たんですよね。

しかし、配列に読み込んで書きこむ手間を考えるとアクティブにしない
で直接操作の方がいいかもしれませんね、、、。
ってことで、組みなおすときに参考にさせて頂きますね。

>3さん

>関数使ったら
>何でもVBAじゃないよ

わざわざご丁寧にどうも。
相当暇なんですね(ワラ
00053NGNG
あらら、通じないのね
残念でした
0006名無しさんNGNG
全部置換するならマクロの方が早いでしょ
00073NGNG
いやいや、全部マクロの関数にする必要ないってことで、
マクロでワークシート関数を埋め込むっていうことなんだけどね

っていうか、この例なら
1.別列に当該列を変換する関数埋め込んで、JIS()ね
2.その列をコピーして当該列に値をペースト
これをマクロで回すっていうことなんだけどね

1.は、1行目だけマクロで埋め込んで、下に必要なだけ式をコピー

全部マクロでやるより、Excelの機能を使えるなら
それを使う。

つまり、マッチング処理なんかも場合により
VLOOKUP()使うとかね

でもあれか、このテクって95の場合何で、97だと違うのかな
00086>7NGNG
確かにそうですね
しかし1は感じ悪いな
聞くときだけ丁寧で、解決したとたんあれだ
00093NGNG
いえ、たぶん私の書き方が悪いんです。
3の表現が7にはつながらないですし、、
0010???NGNG
でも何でこのプロシージャは
functionを使ってるの?
functionはサブルーチンにして
subで動かすのがいいと思うけどね
■ このスレッドは過去ログ倉庫に格納されています