- 締切済み
指定した列の文字を半角→全角に変換するには
エクセルにて以前の同様の質問の回答で特定のセルの文字を半角⇒全角へ変換する方法(マクロ)として以下のような回答を見かけましたが、これを複数の列ごとに行うにはどのようにしたらよろしいでしょうか?住所データを対象としていて行数はその都度変わります。 半角→全角 Sub Macro2() Dim temp As String temp = Cells(1, 2) temp = StrConv(temp, vbWide) Cells(1, 2).Value = temp End Sub どうか、よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17070)
2列(以上)をどう実行者に指定させようとしているのかを書かないと。 その方法(やり方)を考えるのが、VBA程度の(大規模システム以外の)プログラム作成者の考えるべきことです。 例えば、F列、G列のF,Gを指定させるとか、7,8を指定させるとか、セルの範囲を指定させるとか(InputBoxのType:=8)や列をクリックするとか、プログラムの中にF,G列を組み込むとか、色々思いつきます。 自分で1回限りの実行プログラムなら、F列で実行。その後G列に変えて実行をしても差し支えないのでは無いですか。 実行者・利用者が自分以外(仕事は同じでわかっているなど) 実行者は自分だけ 一般利用者 ーー 恒常的に使う 一回限り に応じて、プログラムの利用者との対話やチェックや表示・印刷など 複雑にもなり簡単にも済ませられます。 ーー >具体的な記述がわからず、おたずねしております。 for n = 1 to 100 とは100行までという事でしょうか? 回答が理解されて無い。それでは、回答しても判ってもらえない恐れが多く質問しても役立たない恐れがある。 列を2列について繰り返すなら 繰り返しにForNextを使うなら、 For j=7 to 8 'F,G列2列繰り返し for i=1 to d '1行から最下行d行まで繰り返し 'cells(i,j)について処理。 Next i Next j でやるのが簡単。普通は行優先で処理するので上記のようにしている。 Cells(i,j)はi行,j行のセルを対象に処理をすることです。 これさえわかれば、こんな質問は出ないのではないですか。
- redfox63
- ベストアンサー率71% (1325/1856)
1) そのマクロを列番号、行番号を引数にして同じ動作をする物を作成する 2) 列の変換が必要な領域を算出する 3) その列の変換必要な行をForループなどで繰り返して 1)のマクロを呼ぶ といったのが初歩の段階でしょう 2番目の段階としては 列番号と、変換開始行を引数にして必要な領域の計算やその繰り返しを 1)のマクロ内で行う 2番目の段階で十分な処理速度が得られないなら 変換中に シートの更新状況を見せないようにします Application ScreenUpdating = False をループの開始前に実行し Application ScreenUpdating = True をループ終了後に実行する 他には変換対象のセルデータを配列に読み込み その配列のデータを StrConvで変換 変換の終了データを 一気にセルへ書き戻す dim oData oData = Range( Cells( 1,2 ), Cells( 100,2) ) for n = 1 to 100 oData(n,1) = strCOnv( oData(n,1), vbWidde ) next Range( cells( 1,2 ), Cells( 100,2) ) = oData といった具合です
お礼
ANo.1様ご回答をいただきましてありがとうございます。 具体的な記述がわからず、おたずねしております。 for n = 1 to 100 とは100行までという事でしょうか? できれば、F列、G列を全角に変換という感じに処理できないかと思っております。 よろしくお願い致します。