[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『B列にBと入力したら左隣のA列のセルを赤く』(Satoko)
『Bの列に”B”と入力したら,入力した左隣のAのセルを赤く塗りつぶし,
同時に,Bの列に”A”と入力したら,
入力した左隣のAのセルを青く塗りつぶしたいのですが,
その様なことは出来るでしょうか。
尚,当方マクロ初心者です。
よろしくお願いします。』(Satoko)
エクセルのバージョンは2000,OSはWin2000です。
マクロがご希望ではないですよね。 つい先ほど同じような質問がありましたので、参考にしてお試しください。 [[20040818093955]]『A1が○ならB1の文字は赤色になる』(さんちゃん) (川野鮎太郎)
そうでしたか、失礼しましたm(_ _)m 4つ以上の条件の場合のマクロが過去ログにあると思います。 新単語検索で、(弥太郎) さんか、(夏目雅子似) さんであると思います。(多分(^_^A; 一応今から探してみます。どちらが早いか競争しましょう。(笑 (川野鮎太郎)
一番乗り〜!(笑) おしゃべりは後回しにして、 '--------------------------- Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Integer Dim colr If Target.Count > 1 Then Exit Sub If Target.Column <> 2 Then Exit Sub colr = Array("A", "B", "C", "D", "E") For i = 0 To UBound(colr) If Target = colr(i) Then Target.Offset(, -1).Interior.ColorIndex = i + 3 Exit For End If Next i
End Sub Sheet1のモジュールに貼り付けてくだはい。 (弥太郎)
_/ ̄|○ il||liがくり、負けちゃいました(^_^A;
探そうと思ってもなかなか見つけられませんね><
フォローありがとうございます。
(川野鮎太郎)
ついでと言ってはなんですが、ご教示ください。 上記マクロでB列の値が"A", "B", "C", "D", "E"以外の場合には、 Interior.ColorIndex = xlNone として、一度着色されたものを消去するようにするため、 以下のような感じでやろうとしたのですが、"A", "B", "C", "D", "E"以外の判定をするための構文が判りません。
ご教示願えませんでしょうか。
Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Integer Dim colr If Target.Value = Then ←このThenの前です。※ If Target.Count > 1 Then Exit Sub If Target.Column <> 2 Then Exit Sub colr = Array("A", "B", "C", "D", "E") For i = 0 To UBound(colr) If Target = colr(i) Then Target.Offset(, -1).Interior.ColorIndex = i + 3 Exit For End If Next i Else Target.Offset(, -1).Interior.ColorIndex = xlNone End If End Sub (川野鮎太郎)
色んな方法があるでっしゃろけど、flagで判定させる方法です。
Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Integer Dim colr Dim flag As Boolean
If Target.Count > 1 Then Exit Sub If Target.Column <> 2 Then Exit Sub colr = Array("A", "B", "C", "D", "E") For i = 0 To UBound(colr) If Target = colr(i) Then Target.Offset(, -1).Interior.ColorIndex = i + 3 flag = True Exit For End If Next i If flag <> True Then Target.Offset(, -1).Interior.ColorIndex = xlnon End Sub 最初にIfで判定しようとすると条件が多くなってコードが嵩むと思いまっせぇ。 (弥太郎)
これでエエのとちゃいまっか? (ramrun)
Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Integer Dim colr If Target.Count > 1 Then Exit Sub If Target.Column <> 2 Then Exit Sub colr = Array("A", "B", "C", "D", "E") For i = 0 To UBound(colr) If Target = colr(i) Then Target.Offset(, -1).Interior.ColorIndex = i + 3 Exit For Else Target.Offset(, -1).Interior.ColorIndex = xlnon End If Next i End Sub
Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Integer Dim colr If Target.Count > 1 Then Exit Sub If Target.Column <> 2 Then Exit Sub colr = Array("A", "B", "C", "D", "E") For i = 0 To UBound(colr) If Target.Value = colr(i) Then Target.Offset(, -1).Interior.ColorIndex = i + 3 Exit For Else Target.Offset(, -1).Interior.ColorIndex = xlNone End If Next i End Sub For内で該当がなければ リセットしてしまえば? 処理回数は多いのですが。って、さきこされてまんがな。 (KAMIYA)
あっ、イチャモン屋が二人も! ふふっ、わちきのマクロをパクリおって。(笑) パクられ屋(弥太郎) '--------------- Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Integer Dim colr If Target.Count > 1 Then Exit Sub If Target.Column <> 2 Then Exit Sub Select Case Target Case "A", "B", "C", "D", "E" colr = Array("A", "B", "C", "D", "E") For i = 0 To UBound(colr) If Target = colr(i) Then Target.Offset(, -1).Interior.ColorIndex = i + 3 Exit For End If Next i Case Else Target.Offset(, -1).Interior.ColorIndex = xlnon End Select
End Sub
以外ならForに進まない方法。
KAMIYAさん、ramrunさん、早速のご教示ありがとうございます。m(_ _)m 弥太郎さん、!!!
本当にいろんな方法があるんですね。
このいろんな方法があるのが返って初心者には頭が混乱する原因でもあるような・・・(^_^A;
今後ともご指導お願いいたします。
(川野鮎太郎)
だったらこれでいいような、いくないような? (ramrun)
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Target.Column <> 2 Then Exit Sub Select Case Target Case "A", "B", "C", "D", "E" Target.Offset(, -1).Interior.ColorIndex = Asc(Target) - 62 Case Else Target.Offset(, -1).Interior.ColorIndex = xlnon End Select End Sub
う〜ん、Asc(Target)-62は反則技。 これには解説が必要でっせ。 反則技に負けとる(弥太郎)
一生懸命、エクセルのAsc関数で頭を捻ってました(^_^A; VBAのヘルプを見たら文字コードなんですね。 エクセルのCODEで値を見たら、Aが65、Bが66、・・・・・ これで納得しました〜。!!! (川野鮎太郎)
せやけどCaseの中身が変わると色のローテーションも変わってしまう難点。 やっぱし反則技は使えん・・・、か。 オホホのヘ(弥太郎)
なるほど・・・・ ○、×、△、□、◎で分けたりする場合には使えないって事で、反則技ってことですね。 _〆\(..;) メモメモ (川野鮎太郎)
ありがとうございます。
早速貼り付けてやってみたのですが,マクロの実行ボタンを押しても,
マクロの名前が出て来ず,実行することが出来ません(>_<)
どうしたらよいのでしょうか・・・。
これは、ボタンを押して実行するマクロではないので、該当シートのタブを右クリックして、 コードの表示を押したときに出たウインドウに貼り付けるだけで、 B列に入力したら自動的に変わりますよ^^ (川野鮎太郎)
ありがとうございます〜〜。 貼り付けたら何とかできました。 もう一つ続けて質問なんですが,今の設定だと,色づけは色見本の数字の順番ですよね? (3だと赤からとか,4からだと黄緑からとか) これを,Aだと8番,Bだと22番という風に設定は出来るのでしょうか? (Satoko)
鮎太郎はんは引く手あまたの大繁盛ですワ。 変わりに私めが作りましたんやけど、規則性がなければ1つ1つ分岐せなあきまへん。 colrに好きな番号を入力してくだはい。 (弥太郎) '-------------------------- Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Integer Dim colr As Integer
If Target.Count > 1 Then Exit Sub If Target.Column <> 2 Then Exit Sub Select Case Target Case "A" colr = 5 'ここの色番号をお好きなように Case "B" colr = 8 '々 Case "C" colr = 22 '々 Case "D" colr = 30 '々 Case "E" colr = 6 '々 Case Else Target.Offset(, -1).Interior.ColorIndex = xlnon Exit Sub End Select
Target.Offset(, -1).Interior.ColorIndex = colr
End Sub
弥太郎さん ありがとうございます〜!! 無事に出来ました!! また何か有ったときには,ご教授くださいね。 (Satoko)
昨日式のの応用になるのでしょうか? ”大阪”と入力した左二つ隣のセルに色をつける場合,どこを いじればよいのでしょうか。 単純に,Case "E" colr = 6 のところを,Case "大阪" colr = 6 '々 とし,2ヶ所あるTarget.Offset(, -1).のところを Target.Offset(, -2).にすればよいのでしょうか? (Satoko)
と思ったら、実際にやって試してみましょう^^ そこで手を動かすか、動かす前に聞いてしまうかが、学習スピードの差になりますよ。 もちろんコピーしてからにしてくださいね。 (とおりすがる〜)
説明不足でしたね。 上記の件,試してみたのですが,反応が無かったため,質問したのです。 (Satoko)
B列の左二つ隣のセル?存在しません。 >If Target.Column <> 2 Then Exit Sub ここを修正する必要ありです。何列に入力して何列の色を変えたいのかは分かりませんが・・・ (ケン)
同じ事ですが、 上記マクロはB列に入力を対象としてありますので、左2列は無いので反応が無いのでは? 大阪と入れている列がCならば、 If Target.Column <> 2 Then Exit Sub ~~~ここを3に変更 (川野鮎太郎)
>上記の件,試してみたのですが,反応が無かったため,質問したのです。
それは失礼しました。(とおりすがる〜 改め る〜)
>反応が無かったため, If Target.Column <> 2 Then Exit Sub ここで、Targetの列のチェックをしていますが、2列目、 つまり、B列での入力かどうかをはんだんしています。 しかるに、(Satoko)さんは処理対象外のC列で入力を 行ったので反応がなかったものと推測します。 Target.Offset(, -2) に修正した状態でB列に入力すれば、 「インデックスが有効範囲にありません」エラー。 つまり、B列から左へ2列もオフセットできないよ、 としかられます。 構文一つ一つ解釈していくのは最初はしんどいもんです。 (KAMIYA)
KENさん,鮎太郎さん,KAMIYAさん 変更したところ,無事に処理が行えました。 超初心者なので,一つ一つ勉強して使いこなせるようになりたいと思います。 ありがとうございました。 (Satoko)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.