- ベストアンサー
excel2003 マクロ 複数セルに文字を追記
オートフィルタ後、E列の文字が入力されているセルにのみ 頭に「花」という文字をいれたい。 ということをしたいです。 もともと入っている文字に追記をしたいのですが どうすればよいでしょうか? オートフィルタした値は、すべて同じではないです。 アドバイスお願いします。 Sub オートフィルタ後花をつける() moji = "花" With Worksheets("Sheet1") .Range("E3",Range("E65536").End(xlUp)).SpecialCells(xlCellTypeVisible).Select Selection.Value = moji & ActiveCell.Value←これではだめですよね・・・ End With End Sub
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
オートフィルタで絞り込み表示されているE列にだけ「花」を付けるなら以下も試してみてください Sub Macro2() Dim r As Range On Error GoTo end0 For Each r In Range("E3:E65536").SpecialCells(xlCellTypeConstants, 3) If r.EntireRow.Hidden = False Then r.Value = "花" & r.Value End If Next r end0: End Sub
その他の回答 (1)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 オートフィルタを使うなら、このようにします。 ただし、オートフィルタの場合は、1行目は除外します。 >Selection.Value = moji & ActiveCell.Value←これではだめですよね・・・ 何か方法はあるような気がしますが、思いつきません。 '------------------------------------------- Sub Test1() Dim i As Long Const strMOJI As String = "花" With ActiveSheet .AutoFilterMode = False With Range("A1").CurrentRegion .AutoFilter Field:=5, Criteria1:="<>" End With Application.ScreenUpdating = False 'AutoFilter.Range で範囲を取得 With .AutoFilter.Range.Columns(5) 'E列 For i = 2 To .Rows.Count If .Cells(i, 1).EntireRow.Hidden = False Then .Cells(i, 1).Value = strMOJI & .Cells(i, 1).Value End If Next i End With '.AutoFilterMode = False 'オートフィルタを解除 Application.ScreenUpdating = True End With End Sub
お礼
ご回答ありがとうございます。 フィルタをどう適用するかわからないのですが・・・ 読み解いてみます。
お礼
ありがとうございます! オートフィルタの仕様にほんっとにイライラして 試行錯誤の上、質問で上げさせて頂いたのをやっとこさ作りました。 自分で作っておいてなんですが、絶対いつか、不具合でそうだな・・・ の不安がぬぐえませんでした。 zap35さんの記述なら あらっ、いいですね~100%です!
補足
すみません。 お分かりになったらご回答ください。。。 上で、すでに「花」が付いているセルには 「花」をつけない という風にするには、どうすればよいでしょうか? If の中にandで複数条件 にしても、どのように書けばよいのかわからなくて・・ (ワイルドカードを使うのでしょうか・・・) 初心者で申し訳ないのですが、よろしくお願いいたします。