【100Pスタート】ExcelのVBAマクロ作成に関する質問です。セルの色を条件により変えたいと思っています。たぶん簡単だと思うのですが、なにせVBA作成がド素人なため、アドバイスいただければ幸いです。質問等はリンク先のファイルを参照いただけるとわかりやすいかと思います。対象となるセルはB13〜CW112の10000個のセルです。

http://www.geocities.jp/yukitsun001/kaisen.xls

モジュール内容を示してくれると嬉しいです。シンプルだといいなー。どうぞよろしくお願い致します☆

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/06/13 23:23:41
  • 終了:--

回答(8件)

id:utagawh No.1

utagawh回答回数114ベストアンサー獲得回数32004/06/13 23:47:30

ポイント1pt

urlは無関係

素性のわからないマクロ付きexcelファイルなど開く気もないので詳細不明ですが、

条件付き書式では実現不可能?

id:miku1973

ありがとうございます。「マクロを無効にする」で開かないでしょうか?

2004/06/13 23:54:52
id:tarohbin No.2

tarohbin回答回数108ベストアンサー獲得回数02004/06/13 23:48:19

ポイント1pt

メニューバーの書式というところを開いて

 条件付き書式 というものを選択します。

条件に合わせて文字の色、セルの色をかえることが出来ます。

がんばってください。

id:miku1973

ありがとうございます。「条件付き書式」は知っていますが、今回のようなケースではどうするのかな?

2004/06/13 23:56:17
id:paffpaff No.3

paffpaff回答回数430ベストアンサー獲得回数122004/06/14 00:22:06

ポイント1pt

条件付書式を使うのでしたらこんな風に

自動記録でやってみたい操作をして

記録されたマクロの該当位置に条件をつける方法もあります

自動記録の詳細

マクロの場合はどういう場合に実行させるか決める必要があります

(ボタンを押したら色を変えるのか、どこかセルが変更されたら変えるのか・・など)

セルの値を参照する方法です

id:miku1973

「条件付き書式」は具体的に実現する手段が思いつかなく、「自動記録」では実現できないと思われ、「セル関連マクロ例」は今回は行削除とは違うので・・・。ありがとうございました。

2004/06/14 09:17:59
id:koruto No.4

こると回答回数47ベストアンサー獲得回数02004/06/14 00:25:01

ポイント1pt

http://www.atmarkit.co.jp/fwin2k/win2ktips/328cellstyle/cellstyl...

@IT:Windows TIPS -- Tips:n行おきにExcelのセル書式を変更する

モジュールじゃなくても、セルの色を条件で変えられます。

一応参考まで。

あと、マクロつきのファイルを参照するのはウイルス付きの可能性が0とはいえないので怖いです。VBAのソースを表示してくれたほうがよいかなと思います。では。

id:miku1973

すいません、マクロ付ファイルは確かに不安ですよね。「マクロを実行しない」で開いてもだめかな?

2004/06/14 09:18:57
id:garry No.5

garry回答回数29ベストアンサー獲得回数02004/06/14 00:51:09

ポイント34pt

http://www.atcaj.or.jp/

航空管制協会のWebPageへようこそ

とりあえず、一番目のを作りました。

55までと決まっているなら、for〜nextでもよいのですが、一応空白までとしました。

Sub macroX()

Dim i As Integer

Dim j As Integer

i = 2 ’(12,2)=B12から

j = 13 ’(1,13)=A13から

Sheets(”回線数算出”).Activate

Do Until Cells(12, i).Value = ””

Do Until Cells(j, 1).Value = ””

If Cells(12, i).Value = Cells(j, 1).Value Then

Cells(j, i).Select

With Selection.Interior

.ColorIndex = 1

End With

End If

j = j + 1

Loop

i = i + 1

j = 13

Loop

End Sub

id:miku1973

ありがとう!!!!

セルの色を黒にするマクロは完璧にできました!

うれしいですっ!

後はピンクにするマクロだなー。

2004/06/14 09:22:32
id:garry No.6

garry回答回数29ベストアンサー獲得回数02004/06/14 01:39:29

ポイント34pt

長いですが、(2)のほうです。

Sub macroXX()

Dim i, j, ii, jj As Integer

Dim escapeSW As Boolean

Dim groupI As Integer

Dim groupJ As Integer

i = 2

j = 13

escapeSW = False

Sheets(”回線数算出”).Activate

Do Until Cells(12, i).Value = ””

Do Until Cells(j, 1).Value = ””

jj = 1

ii = 1

’横の自然数のグループを求める

For jj = 1 To 10

For ii = 1 To 10

If Cells(12, i).Value = Cells(jj, ii).Value Then ’(jj,ii)はエリア番号設定の表(A1からJ10)まで

groupI = Cells(jj, ii + 22).Value ’左の表から22を足すとグループ設定の表

escapeSW = True ’省略可(見つかった時点で探すのをやめるため)

Exit For ’省略可

End If

Next

If escapeSW = True Then ’省略可

escapeSW = False ’省略可

Exit For ’省略可

End If ’省略可

Next

’以下、縦の自然数のグループ(同じ考え)

For jj = 1 To 10

For ii = 1 To 10

If Cells(j, 1).Value = Cells(jj, ii).Value Then

groupJ = Cells(jj, ii + 22).Value

escapeSW = True

Exit For

End If

Next

If escapeSW = True Then

escapeSW = False

Exit For

End If

Next

’一致したセルを塗る

Cells(j, i).Select

With Selection

If groupI = groupJ Then

Selection.Interior.ColorIndex = 7

Else

Selection.Interior.ColorIndex = xlNone

End If

End With

j = j + 1

Loop

i = i + 1

j = 13

Loop

End Sub

id:miku1973

ありがとう!!!!

すごいです。バッチリできているような感じです!!

Slectがあるため、セルの選択している様子が見えてしまうのですが、

これって、なくせないかなー。

VBAを作られる方って、このぐらいの量の文はどのくらいの時間で作成できるものなのでしょうか?

ありがとですー!

2004/06/14 09:33:00
id:ozonepapa No.7

ozonepapa回答回数288ベストアンサー獲得回数02004/06/14 01:50:36

ポイント68pt

URLはダミーです。

左端の表の値と3つ目の表の値を関連付けるためにdata配列を作りました。

自然数の値が、1から10000であると仮定して配列は作っています。

data(11) = 1

data(12) = 1

data(13) = 1

...

の配列を作成し

セルの(m,n)のdata(m)とdata(n)が等しいかどうかを調べています。

それ以外は、「透明」にというところは、よくわからなかったので記述していません。

ご質問の回答になっていますでしょうか?

Cellに色をつける方法がわからず手間取ってしまいました。

Sub sub1()

Dim i As Integer

Dim j As Integer

Dim k As Integer

Dim data(10000) As Integer

k = 0

For i = 1 To 10

For j = 1 To 10

If Not IsEmpty(Cells(i, j)) Then

data(Cells(i, j)) = Cells(i, j + 22)

k = k + 1

End If

Next j

Next i

For i = 1 To k

For j = 1 To k

If i = j Then

Range(Cells(i + 12, j + 1), Cells(i + 12, j + 1)).Interior.ColorIndex = 1

ElseIf data(Cells(i + 12, 1)) = data(Cells(12, j + 1)) Then

Range(Cells(i + 12, j + 1), Cells(i + 12, j + 1)).Interior.ColorIndex = 22

Else

Rem 透明

End If

Next j

Next i

End Sub

id:miku1973

ありがとーーーーーーー!!

完璧すぎます・・・。これを使わせていただくかもしれません!!

2004/06/14 09:55:30

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 hzk 77 65 0 2004-06-14 02:43:32
  • id:wan2ree
    セルの選択を見えなくするには

    最新の質問見て来ました。
    タイトルについて、既にご存じかもしれませんが、
    With Application
    .ScreenUpdating = False ’画面の更新を停止
    .DisplayAlerts = False ’警告メッセージの表示を停止
    End With
    を選択処理が始まる前に入れて、選択処理終わったところかEnd Subの前にFalse->Trueにしたものを入れると、画面更新自体されなくなります。
    ただ、マクロ実行時にエラーが生じたりすると、Excelシートが見えない状態で止まったりもします、たぶん。。
    (スマートな解決策あるかもしれませんが、うちは↑のFalse->Trueにしたものだけのマクロ作ってます。)

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません