[[20200908104922]] 『再度投稿「ctrl + Enter」』(再もうすぐ昼) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『再度投稿「ctrl + Enter」』(再もうすぐ昼)

範囲選択をして何か適用な文字を入力し「ctrl + Enter」を押すと、範囲した箇所全てが入力した値になると思いますが、VBAで「ctrl + Enter」の機能を使う方法を教えてださい。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


 ちょっと真意が分かってないかもですが、
 所期の結果が得られればいいハズなので、
 これでよくないですか?
  ↓
 Range(選択範囲).Value = 適当な文字

(半平太) 2020/09/08(火) 11:14


説明が雑でした。
シートが複数あり、その全てのシートに対してループで処理を行っています。
そのループ処理の中である範囲(シートによって行はことなる)に文字を変えてctrl + Eneterで貼り付けを行いたいですよね。
なのでシートによって範囲が変わるので上のコマンドでは処理が行えないです。

SendKeys “^{Enter}” とかでできないですね?
(再もうすぐ昼) 2020/09/08(火) 11:25


 どんな方式であっても、シート毎に決まる「範囲と文字」が何なのか分かる仕掛けが必要です。

 その情報は、どうやってエクセルに認識させるのですか?

(半平太) 2020/09/08(火) 11:39


R列の「OK」と入ってるセルを「■ OK」にするというのがあり、今回自分がしているのは
R列にフィルターをかけて「OK」を抽出して表示させます。そこからR列を全選択して検索と選択から「定数」で選択するとフィルターで抽出した「OK」という文字を全部選択してくれます。
そこから「■ OK」に変えて「ctrl + Enter」で全セル反映させる感じです。

この流れをVBAで行いたいです。
(再もうすぐ昼) 2020/09/08(火) 11:53


 >R列にフィルターをかけて「OK」を抽出して表示させます。

 その後の処理は、これでいいんじゃないですか?(2行目以下にある値セルを書き換える)

      With Range("R2", Cells(Rows.Count, "R").End(xlUp))
          .SpecialCells(xlCellTypeConstants, 23).Value = "■ OK"
      End With

(半平太) 2020/09/08(火) 12:20


編集がかぶりましたが、そのまま。

>この流れをVBAで行いたいです。
前トピックでもアドバイスされていますが、マクロの記録を試してみてはいかがでしょうか。

(もこな2 ) 2020/09/08(火) 12:22


今から試してみます。
回答ありがとうございます
(再もうすぐ昼) 2020/09/08(火) 13:09

試したところうまくいきました。
そこでもう一つ質問なんですが、■ OKの■を赤色にしたい場合はどうすればいいでしょうか
(再もうすぐ昼) 2020/09/08(火) 13:17

 選択したセルですよね。
 Selection.value=123
 で、良いのでは。
(Why) 2020/09/08(火) 13:19

With Range("R2", Cells(Rows.Count, "R").End(xlUp))
          .SpecialCells(xlCellTypeConstants, 23).Value = "■ OK"
End With

このコマンドのどの部分に Selection.value=123を入れたらいいですか?

(再もうすぐ昼) 2020/09/08(火) 15:09


 >このコマンドのどの部分に Selection.value=123を入れたらいいですか?

 ???
 選択したセルでしょ。
 Selection って、選択してあるものって意味よ。
 まあ、選択した物がセルとは限らない事もあるし、
 図形、画像、グラフその他色々あるので、解ってないと・・・。
(Why) 2020/09/08(火) 15:26

With Range("R2", Cells(Rows.Count, "R").End(xlUp))
          .SpecialCells(xlCellTypeConstants, 23).Value = "■ OK"
End With

のコマンドで選択されている部分が「■ OK」に変わることはわかりました。
ただこの後に「■ OK」の■の部分だけ赤 OKは黒文字のままにしたいです。

(ひょっとこ) 2020/09/08(火) 15:44


 >ただこの後に「■ OK」の■の部分だけ赤 OKは黒文字のままにしたいです。 

 簡単に言ってますけど、面倒くさいですよ。
 マクロ記録を取ってみれば解ると思いますが、1セルずつかつ1文字ずつ比較するので。
 まずはマクロ記録を取って、それを応用してみては。
(Why) 2020/09/08(火) 15:49

そうですね。発想を変えてみます。

選択してる範囲で「■」特定の文字だけ赤色にするなどできるか調べてみます。
(再もうすぐ昼) 2020/09/08(火) 16:17


セットするのは全部同じ文字のようなので、何とかなるかな? 貼り付け先は、半平太さん案を採用。
 Sub test()
    With CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
        .SetText "<html><font color=#FF0000>■</font> OK</html>"
        .PutInClipboard
    End With
    Range("Z1").PasteSpecial
    Range("Z1").Copy

    Range("R2", Cells(Rows.Count, "R").End(xlUp)).SpecialCells(xlCellTypeConstants, 23).Select
    ActiveSheet.Paste
    Range("Z1").Clear
 End Sub
(???) 2020/09/08(火) 16:36

 Sub test()
    'オートフィルターが設定されているセル範囲の
    With ActiveSheet.AutoFilter.Range
        '1行下にずらしたセル範囲と
        'R列が重なるセル範囲の内の可視セルの
        With Intersect(.Offset(1), .Columns("R")).SpecialCells(xlCellTypeVisible)
            '1個目のセルに対して操作
            .Cells(1).Value = "■ OK"
            .Cells(1).Characters(Start:=1, Length:=1).Font.Color = vbRed
            .Cells(1).Copy .Cells   '可視セルの全部にコピペ
        End With
    End With
 End Sub

こんな感じですかね?
とりあえず1個編集して、コピペすればよいと思いますが?

(まっつわん) 2020/09/09(水) 09:51


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.