A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
Sub DePaintCell()
Const START_COLUMN As String = "E", START_ROW As Integer = 2
Const END_COLUMN As String = "P", END_ROW As Integer = 100
Range(START_COLUMN & START_ROW & ":" & END_COLUMN & END_ROW).Interior.ColorIndex = 0
End Sub
のひとかたまりで入力しましたか?①
少々説明不足でしたが、
START_COLUMN, START_ROW, END_COLUMNの入力は2カ所あり、
どちらとも設定しておく必要があります。②
二個とも試してみてダメだったら、すみませんがもう一回
Optional Explicit から
|
End Function までコピってみてください。
それでもダメだったら
Range(.... の方でエラーか End Subのところでエラーか教えてください。
No.5
- 回答日時:
いえ、セルへの入力はありません。
ただし、
NAME_NUM, START_COLUMN, START_ROW, END_COLUMN
の設定が必要です。一番左に「Const」と書いてあるところを探せば見つかります。
質問者さんの質問では、どこのセルから塗り始めるのかよくわからなかったので、設定できるようにしておきました。
START_COLUMN はマス目の一番左上のセルの行、START_ROWはその列です。
END_COLUMN はマス目の一番右上のセルの行です。
例えば、J3 からAR3までマス目があるとき、
START_COLUMN As String = "J" <-ここ!! ,START_ROW As Integer = 3 <- ここ!!
END_COLUMN As String = "AR" <-ここ!! (一部省略)
とすればいいです。
※ごめんなさい。訂正です。※
最悪は直さなくてもいいですが、END_COLUMNの設定を間違えるとバグります。注意してください。
-----------------------------------
If value(1, i) <= 0 Then
now_row = now_row + 1
Exit Do
ElseIf j - Rows_address(START_COLUMN) + 1 >= value(2, i) Then
now_row = now_row + 1
Exit For
End If
Next
-----------------------------------
これを下のように直しておいてください。
-----------------------------------
If value(1, i) <= 0 Then
now_row = now_row + 1
Exit Do
ElseIf j - Rows_address(START_COLUMN) + 1 >= value(2, i) Then
now_row = now_row + 1
Exit For
End If
If j = Rows_address(END_COLUMN) Then
now_row = now_row + 1
End If
Next
----------------------------------
あと補足見づらくなってしまってすみません。
Aセルに名前、Bセルに数量、Cセルに最大値を入力すればいいと言うことです。
何度も長文で申し訳ありません。お力になれれば幸いです。
No.4
- 回答日時:
こんにちは!
一案です。
↓の画像のようにB列「名前」?を塗りつぶしたい色にしておきます。
そうした上での一例です。
Sub Sample1()
Dim i As Long, cnt As Long
Dim myRow As Long, myCol As Long
Dim lastCol As Long
lastCol = Cells(2, Columns.Count).End(xlToLeft).Column
Range(Columns("F"), Columns(lastCol)).Interior.ColorIndex = xlNone
myRow = 2
For i = 3 To Cells(Rows.Count, "B").End(xlUp).Row
myCol = 5
If Cells(i, "C") > 0 Then
Do Until cnt = Cells(i, "C")
cnt = cnt + 1
If cnt Mod Cells(i, "D") = 1 Then
myRow = myRow + 1
myCol = 5
End If
myCol = myCol + 1
Cells(myRow, myCol).Interior.Color = Cells(i, "B").Font.Color
Loop
End If
cnt = 0
Next i
End Sub
※ 色によっては判別しにくいコトもあるかもしれません。
その場合は使っていない列のセルを塗りつぶし、
その色を利用した方が良いかもしれませんね。m(_ _)m
No.3
- 回答日時:
<設定の仕方>
A B C D .... ※下の方にどんどん追加していってください。
1 name 数量 MAX ただし、NAME_NUM , Colors の値を変更すること。
色を塗ったあと、消すとき用にDePaintCell() を作りました。
2 a 12 10 いらなかったら消しといてください。
3 b 8 12 セルの色が気に入らなかったらネットでInterior.ColorIndexについて
調べて、変更、追加してください。
4 c 20 8
. <Colorsの変更の仕方>
. Colors = Array(3, 5, 6) <-ここを
. Colors = Array(3, 5, 6 , 12, 35) のようにする。
(1色目、2色目、3色目、4色目...)となっています。
No.2
- 回答日時:
Option Explicit
Sub DePaintCell()
Const START_COLUMN As String = "E", START_ROW As Integer = 2 '?F?h??J?n??u
Const END_COLUMN As String = "P", END_ROW As Integer = 100
Range(START_COLUMN & START_ROW & ":" & END_COLUMN & END_ROW).Interior.ColorIndex = 0
End Sub
Sub PaintCell()
Const NAME_NUM As Integer = 3 '種類の数
Dim Colors(): Colors = Array(3, 5, 6)
Dim value(2, NAME_NUM - 1)
Dim i As Integer, j As Integer
For i = 0 To 2
For j = 0 To NAME_NUM - 1
value(i, j) = Cells(j + 2, i + 1)
Next
Next
Const START_COLUMN As String = "E", START_ROW As Integer = 2 '色塗り開始位置
Const END_COLUMN As String = "P"
Dim now_row As Integer
now_row = START_ROW
For i = 0 To NAME_NUM - 1
Do
For j = Rows_address(START_COLUMN) To Rows_address(END_COLUMN)
Cells(now_row, j).Interior.ColorIndex = Colors(i)
value(1, i) = value(1, i) - 1
If value(1, i) <= 0 Then
now_row = now_row + 1
Exit Do
ElseIf j - Rows_address(START_COLUMN) + 1 >= value(2, i) Then
now_row = now_row + 1
Exit For
End If
Next
Loop While True
Next
End Sub
Private Function Rows_address(str As String) As Integer 'A->1, AB->28, BR->70
Dim i As Integer
For i = 1 To Len(str)
Rows_address = Rows_address + (Asc(UCase(Mid(str, i, 1))) - 64) * 26 ^ (Len(str) - i)
Next
End Function
作れましたのでどうぞ。
追加等あれば、また言ってください。
No.1
- 回答日時:
つまり、MAX値とあるのはいわゆるロット数で、数量がロット数を超えている場合は次の行(2ロット目)にはみ出て塗りつぶしをしてほしいということですかね。
商品が変わる場合は、前の商品の塗りつぶしの次の行から塗って欲しいと。
>※写真とセルが少し違いますがご了承下さい
サンプルを出すなら、説明と整合させるのは最低限の礼儀かと思います。
どっちかに合わせて回答を作っても実際の配置と違ってて、うまく変更できませ~ん、と帰ってきて時間の無駄になることもあります。
この回答へのお礼
お礼日時:2019/07/09 19:02
サンプルについてはごもっともです。
言い訳になりますが、説明文だけでいけるか不安で写真を貼り付けたが、セルがずれてるままでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルで教えて下さい。 2 2022/05/18 13:00
- iPhone(アイフォーン) iPhoneのバッテリー残量表示について 5 2022/12/31 19:22
- Excel(エクセル) Excelで行削除をすると… 1 2023/07/26 11:57
- Excel(エクセル) エクセルを活用した受注表作成の中で関数・数式を教えてください。 3 2022/07/23 08:14
- その他(Microsoft Office) エクセル 条件付き書式 日をまたぐ塗りつぶし 1 2023/01/13 18:00
- CGI VBAで条件から範囲を指定して色を塗る方法を知りたいです 1 2022/06/30 16:05
- Google Drive Googleスプレッドシートについて質問です。 今作っているデータで、 シート1→ベタ打ちでひたすら 2 2022/05/18 14:27
- ライブ・コンサート・クラブ チケット 名義と発券店舗塗りつぶし 告知なし 1 2023/02/07 23:04
- Excel(エクセル) マクロ/VBAについて教えてください。 10 2022/05/27 12:59
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vbaで指定したセルより下の行を...
-
IF関数で違う値もTRUEになる
-
VBAでの SendKeysの変数指定方法
-
Excel VBA:フォーム←→セルのア...
-
ファイルサーバー上のexcelファ...
-
マクロのデータ削除
-
エクセルでセルをクリックする...
-
ExcelVBAでセルの番地を変数と...
-
Excel VBA で色付きのセルの値...
-
Excelで数値の変化をカウントし...
-
結合セル内の値を、結合解除後...
-
excel マクロでの特殊文字入力方法
-
EXCEL(VBA) セルをクリックし...
-
Excelのマクロで選択している行...
-
選択されたセルが赤くなる方法...
-
エクセル VBA アクティブセル...
-
VBA Rangeの足し算
-
エクセルマクロで「セルのサイ...
-
ダブルクリックでセルに色をつ...
-
エクセルで2箇所同時に字に丸囲...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vbaで指定したセルより下の行を...
-
エクセルでセルをクリックする...
-
VBAでの SendKeysの変数指定方法
-
Excel VBA:フォーム←→セルのア...
-
Excelマクロ セルを行頭に移動
-
【VBA】アクティブセルだけ背景...
-
IF関数で違う値もTRUEになる
-
エクセルマクロで「セルのサイ...
-
Excel VBA で色付きのセルの値...
-
ダブルクリックでセルに色をつ...
-
excel マクロでの特殊文字入力方法
-
マクロのデータ削除
-
ExcelVBA コンボボックスに入力...
-
ファイルサーバー上のexcelファ...
-
VBA Rangeの足し算
-
(エクセルVBA)セルを左クリッ...
-
Excelのマクロで選択している行...
-
セルをクリックしたら色を変え...
-
エクセル:セルの色のコード番...
-
EXCEL(VBA) セルをクリックし...
おすすめ情報
詳しく作成頂きありがどうございます。
補足までありがとうございます。
まだ出先で手元にpcがないため試してなく、またマクロ等かなりの初心者なのでせっかく作成していただいのにこんな質問申し訳ないんですが、コピペしたらすぐに使える状態でしょうか?補足以外にセルを入れなきゃいけない等はありますか?
早々に再回答ありがとうございます。
早速入れてみたのですが、下記部分で「構文エラー」がでるのはなぜでしょうか?
ド素人のような質問で申し訳ないです。
Range(START_COLUMN & START_ROW & ":" & END_COLUMN & END_ROW).Interior.ColorIndex = 0
End Sub