プロが教える店舗&オフィスのセキュリティ対策術

行を特定の色にすると、指定したセルに特定の文字を入力するコードをしりたいです。
結構な量のデータがあり、もし可能であれば、マクロで処理したく。。。
宜しくお願いします。

A 回答 (7件)

遅くなってすみません。


Ribbon からのカスタマイズについては、CellFillColorPickerを、捕まえることができませんでした。
gallary をcontrol に変えることでできるようなことが書かれてあったのですが、成功しません。おそらく、何か製造上の問題があるようです。

失敗しました。いずれ、誰かがこれをみて、かんがえてくれるものと思います。
<group idMso="GroupCells" >
     <!--additional functions-->
     <control
      idMso="CellFillColorPicker"
      label="myGallery"
      onAction="CellFillPicker_onAction"/>
 </group >

そこで、旧式の方法(Excel 2000 )のテクニックを使ってみることにしました。以下は、Excel 2013 で行いましたが、いろいろな環境で同じように動くかは言えません。

'標準モジュール
Option Explicit
Public clsCBClass As New Class1 'クラスが一つ必要です。
Public cbrBar As Office.CommandBar
Sub Auto_Open 'ファイルオープン時に実行
 Call InitEvents
End Sub
Sub InitEvents()
 Set cbrBar = CommandBars("Formatting")
 Set clsCBClass.colCBars = CommandBars
End Sub

'Class1 モジュール
Public WithEvents colCBars  As Office.CommandBars

Private Sub colCBars_OnUpdate()
With ActiveCell.Interior
  If .ColorIndex = xlColorIndexAutomatic Then Exit Sub
  If .ColorIndex = xlColorIndexNone Then Exit Sub
   DoEvents
   If .ColorIndex = 6 Then
    ActiveCell.Offset(, 1).Value = "黄色"
   Else
    ActiveCell.Offset(, 1).ClearContents
   End If
End With
End Sub


これで、黄色のセル塗りつぶしをすると、Activecell の右隣に「黄色」が入るようにできました。コードは貼り付けた後に、再起動するか、IniEvents を実行すれば、入力が可能になります。
非常に単純なコードですから、加工すれば、いろいろできるようになります。

ただし、イベントの除外条件は、かならず、OnUpdate の先頭側に持ってくることを忘れてはいけません。おかしな動作をすることがあります。実用度はどの程度かは分かりません。#6さんのおっしゃる方法など、一括して行なうというのが、マクロのマクロたる所以であることは申すまでもありませんが。
    • good
    • 0

No.1 の追補



考え方を変えて、とりあえず先に色だけ変更しておいて「保存するとき」や「次に開いたとき」に、色を判断して特定の文字をまとめて自動入力する。ならば簡単に実現できる思います。
    • good
    • 0

こんにちは。



色を変えたらイベントを発生するマクロというのは、Excel 2003時代から知られているものです。

#3さんの紹介されたものは、クラスで作ったインスタンスを、ボタンにつければよかったのですが、今日、不具合があるかもしれないという話を聞いています。理由は良く知りません。それに、今でも、その方法自体は頼らざるを得ないのです。私も時々書いているのですが、ここの所、ボツ解答のようです。また、私は、プロジェクトAの井川さんのタイマーイベントの方式は取りません。アイデアとしては認めますが無茶です。

それに代わるためのものを、ここ数ヶ月、ずっと私は、マクロの勉強をしていたわけです。
少しだけ分かってきたような気がします。それで、Excel のバージョンは、2010を基準として作ります。ただし、最初 VBAではなくて、XMLです。エディタは、NotePad++ で元型を作ってから、Office Ribbon Ediotr に入れて、Call Back を取れるようにして、VBAで作り始めます。今までのイメージとはぜんぜん違います。

ツールの、Office Ribbon Ediotr(ver 4.4.2) は今のところ不可欠です。もし、ご興味のある方は、是非とも手に入れてください。うまく手に入りましたら、ラッキーです。

ただ、仕組みは簡単なのです。
ボタンのIdMso の当該名称に、OnAction をつけて反応すれば成功です。
しばらく時間をください。できるかどうかやってみます。
    • good
    • 0

色を変えたら、というタイミングでイベントを発生させることはできません。


色を変更したあとにボタンを押し、その押したタイミングでイベントを発生させるとかはダメでしょうか?
仰るような色を変更したときということだと、セルを選択した時等、常にマクロで色を監視することになり、ちょっとどうかと思います。
    • good
    • 0

過去に似たような質問がありましたので,参考にされてはいかがでしょうか.



https://oshiete.goo.ne.jp/qa/4680287.html
    • good
    • 0

もっと、具体的に、書いてください。


シート名は何か。
どの行のどの列にどの色がつくのか。色は、背景につくのか、文字自体につくのか。
どのセルに何という文字をセットしたいのか。
現状では、上記の情報が不明なので、「マクロでなら可能と思われる」という回答しかできません。
    • good
    • 0

残念ながら、色を塗り替えたというイベントがないので自動では無理です。

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!