- 締切済み
VBA必要な文字数だけ取得して
Excel 2007です。 VBAについてです。 A行にA1に「AA-01あああ」、A2に「AA-02いいいい」、A3に「AA-03ううううう」・・・・ と入っていたとします。 これをマクロ実行後、それぞれ「AA-01」、「AA-02」、「AA-03」という状態にしたいのですが、どのようにしたらうまくいくでしょうか。 「AA-01」といったように、この部分の文字数は変わらないので、私が考えたのはMid関数で、頭の5文字だけをセルに入れる。といった処理なのですが・・・。 うまく動かないのですが、現在できたところまで見ていただけると助かります。 Dim MaxRow As Long Dim MyRng Dim xtext MaxRow = Worksheets("sheet1").Cells(Rows.Count, 1).End(xlUp).Row MyRng = Worksheets("Sheet1").Range("A1:A" & MaxRow) For Each xtext In MyRng Selection.Rng.Value = Mid(xtext,1,5) Next xtext わからないのは Selection.Rng.Value = Mid(xtext,1,5) の行で左辺をどのようにするのかで、その処理の時のセルの位置(?A1だとかA2だとか)を入れられたらよいかと思うのですが、どうやって取得するかがわかりません。 ご助力願います。 よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- K Kazz(@JazzCorp)
- ベストアンサー率31% (549/1751)
Excelのバージョンに依存しない最終行が解っているなら、そこまで「セル」でハンドルする。 Sub MacenRow() Dim MaxRow As Long Dim kk As Long MaxRow = Worksheets("sheet1").Cells(Rows.Count, 1).End(xlUp).Row For kk = 1 To MaxRow Cells(kk, "A") = Left(Cells(kk, "A"), 5) Next kk End Sub
- keithin
- ベストアンサー率66% (5278/7941)
sub macro1() dim h as range for each h in range("A1:A" & range("A65536").end(xlup).row) if h <> "" then ’無くても構わない h.value = left(h.value, 5) end if ’同上 next end sub みたいな。 #勿論,65536行を越えて沢山のデータを処理したいのでしたら,あなたのマクロの書きぶりで備えます。