質問編集履歴
3
文章からわかりにくくなるような要素を削除し、伝えたいことだけを書くようにしました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,169 +1,61 @@
|
|
1
|
-
|
1
|
+
【やりたいこと】
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
|
5
|
+
・エクセルのセルの色を変えたい。
|
6
|
+
|
7
|
+
(値が0の時は緑、0より大きい場合は赤、0より小さい場合は青にしたい)
|
6
8
|
|
7
9
|
|
8
10
|
|
11
|
+
・エクセルの空白セルの判定を行いたい。
|
12
|
+
|
9
|
-
|
13
|
+
(理由:セルの値が0の時、とすると空白セルも拾ってしまうため)
|
14
|
+
|
15
|
+
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
|
16
|
+
|
17
|
+
【困っている点】
|
10
18
|
|
11
19
|
|
12
20
|
|
21
|
+
・上記【やりたいこと】でも少し触れていますが、空白セルに0が入っているらしく、
|
22
|
+
|
13
|
-
|
23
|
+
if(セルの値==0)と書くと空白セルのところも拾ってしまいます(緑になってしまう)
|
14
24
|
|
15
25
|
|
16
26
|
|
27
|
+
ーーー
|
28
|
+
|
17
|
-
|
29
|
+
https://docs.microsoft.com/ja-jp/office/troubleshoot/excel/use-formula-evaluate-blank-cell
|
18
30
|
|
19
31
|
|
20
32
|
|
33
|
+
にて
|
21
34
|
|
22
|
-
|
23
|
-
|
35
|
+
IF(ISBLANK(対象セル),"blank",IF(対象セル=0,"zero","other"))
|
24
36
|
|
25
37
|
|
26
38
|
|
27
|
-
”セルの値が0の時”
|
28
|
-
|
29
|
-
|
39
|
+
という判定方法を使わなければいけないと見つけました。
|
30
40
|
|
31
41
|
|
32
42
|
|
33
|
-
#
|
43
|
+
しかしこれをどうC#側に組み込んでいいかわからず困っています。
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
|
34
50
|
|
35
51
|
|
36
52
|
|
37
|
-
|
53
|
+
ーーーーーーーーーーー
|
38
54
|
|
39
|
-
|
55
|
+
|
40
56
|
|
41
|
-
var selectedAreas = selectedRange.Areas as Excel.Areas;
|
42
|
-
|
43
|
-
int selectedRowsCount = selectedRange.Rows.Count;
|
44
|
-
|
45
|
-
|
57
|
+
昨日この質問を上げた際、わかりにくく読みにくい文章になってしまいまして皆様にご迷惑をおかけいたしました。大変失礼いたしました。
|
46
|
-
|
47
|
-
int secondTimeMoreColunm = 0;
|
48
|
-
|
49
|
-
int secondTimeMoreRow = selectedRowsCount;
|
50
|
-
|
51
|
-
//string checkString = " ";
|
52
58
|
|
53
59
|
|
54
60
|
|
55
|
-
//↓選択されているセルの総数(行×列)分のループ処理
|
56
|
-
|
57
|
-
for (int a = 0; a < selectedRange.Count; a++)
|
58
|
-
|
59
|
-
{
|
60
|
-
|
61
|
-
if(activeSheet.Cells[selectedRange.Row,selectedRange.Column].)
|
62
|
-
|
63
|
-
//↓選択されている列が複数の場合の処理。elseの方のループが先に動いて、
|
64
|
-
|
65
|
-
//行カウントが全体の選択セルカウントに越されたとき(2列目)から走るコマンド
|
66
|
-
|
67
|
-
|
61
|
+
また丁寧にその旨ご指摘いただいたことに感謝申し上げます。
|
68
|
-
|
69
|
-
{
|
70
|
-
|
71
|
-
if (Convert.ToDecimal(activeSheet.Cells[selectedRange.Row + (a + secondTimeMoreRow) - selectedRowsCount, selectedRange.Column + secondTimeMoreColunm].Value) == 0)
|
72
|
-
|
73
|
-
{
|
74
|
-
|
75
|
-
activeSheet.Cells[selectedRange.Row + (a + secondTimeMoreRow) - selectedRowsCount, selectedRange.Column + secondTimeMoreColunm].Interior.Color = Color.GreenYellow;
|
76
|
-
|
77
|
-
}
|
78
|
-
|
79
|
-
if (Convert.ToDecimal(activeSheet.Cells[selectedRange.Row + (a + secondTimeMoreRow) - selectedRowsCount, selectedRange.Column + secondTimeMoreColunm].Value) > 0)
|
80
|
-
|
81
|
-
{
|
82
|
-
|
83
|
-
activeSheet.Cells[selectedRange.Row + (a + secondTimeMoreRow) - selectedRowsCount, selectedRange.Column + secondTimeMoreColunm].Interior.Color = Color.LightPink;
|
84
|
-
|
85
|
-
}
|
86
|
-
|
87
|
-
if (Convert.ToDecimal(activeSheet.Cells[selectedRange.Row + (a + secondTimeMoreRow) - selectedRowsCount, selectedRange.Column + secondTimeMoreColunm].Value) < 0)
|
88
|
-
|
89
|
-
{
|
90
|
-
|
91
|
-
activeSheet.Cells[selectedRange.Row + (a + secondTimeMoreRow) - selectedRowsCount, selectedRange.Column + secondTimeMoreColunm].Interior.Color = Color.LightSkyBlue;
|
92
|
-
|
93
|
-
}
|
94
|
-
|
95
|
-
}
|
96
|
-
|
97
|
-
//↓選択されているセルの列が単数。または複数でかつ一列目の処理
|
98
|
-
|
99
|
-
else
|
100
|
-
|
101
|
-
{
|
102
|
-
|
103
|
-
if (Convert.ToDecimal(activeSheet.Cells[selectedRange.Row + a, selectedRange.Column].Value) == 0)
|
104
|
-
|
105
|
-
{
|
106
|
-
|
107
|
-
activeSheet.Cells[selectedRange.Row + a, selectedRange.Column].Interior.Color = Color.GreenYellow;
|
108
|
-
|
109
|
-
}
|
110
|
-
|
111
|
-
if (Convert.ToDecimal(activeSheet.Cells[selectedRange.Row + a, selectedRange.Column].Value) > 0)
|
112
|
-
|
113
|
-
{
|
114
|
-
|
115
|
-
activeSheet.Cells[selectedRange.Row + a, selectedRange.Column].Interior.Color = Color.LightPink;
|
116
|
-
|
117
|
-
}
|
118
|
-
|
119
|
-
if (Convert.ToDecimal(activeSheet.Cells[selectedRange.Row + a, selectedRange.Column].Value) < 0)
|
120
|
-
|
121
|
-
{
|
122
|
-
|
123
|
-
activeSheet.Cells[selectedRange.Row + a, selectedRange.Column].Interior.Color = Color.LightSkyBlue;
|
124
|
-
|
125
|
-
}
|
126
|
-
|
127
|
-
}
|
128
|
-
|
129
|
-
if ((a + 1) % selectedRowsCount == 0)
|
130
|
-
|
131
|
-
{
|
132
|
-
|
133
|
-
secondTimeMoreColunm++;
|
134
|
-
|
135
|
-
secondTimeMoreRow = secondTimeMoreRow - selectedRowsCount;
|
136
|
-
|
137
|
-
}
|
138
|
-
|
139
|
-
}
|
140
|
-
|
141
|
-
}
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
### 試したこと
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
いろいろネットで調べまして、Equals(""), Equals(string,"") , .Value == null , .Value == ""
|
150
|
-
|
151
|
-
等を試してみたのですがだめでした。
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
なにかセルの表示がされない状態になっている時 のようなまったく別の角度からのアプローチでないといけないのでしょうか。
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
selectedRange.Length のようなLengthにあたるものはないのでしょうか。VBAだとlenというものがある(?)らしいのですがVSTO(C#)だとなさそうにみえるのです 。。。
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
わかりにくい質問でしたら申し訳ございません。書き方にこだわりはなく、空セルをスルーできればそれで解決です。0と空セルの区別をつける方法をご教授ください。よろしくお願いいたします。
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
追記:https://docs.microsoft.com/ja-jp/office/troubleshoot/excel/use-formula-evaluate-blank-cell
|
168
|
-
|
169
|
-
にてIF(ISBLANK(対象セル),"blank",IF(対象セル=0,"zero","other")) という判定方法を使うと書いてあるのを見つけました。これをC#にてどう組み込んだらいいのでしょうか。これが組み込めれば解決するのでしょうか
|
2
追記した
test
CHANGED
File without changes
|
test
CHANGED
@@ -161,3 +161,9 @@
|
|
161
161
|
|
162
162
|
|
163
163
|
わかりにくい質問でしたら申し訳ございません。書き方にこだわりはなく、空セルをスルーできればそれで解決です。0と空セルの区別をつける方法をご教授ください。よろしくお願いいたします。
|
164
|
+
|
165
|
+
|
166
|
+
|
167
|
+
追記:https://docs.microsoft.com/ja-jp/office/troubleshoot/excel/use-formula-evaluate-blank-cell
|
168
|
+
|
169
|
+
にてIF(ISBLANK(対象セル),"blank",IF(対象セル=0,"zero","other")) という判定方法を使うと書いてあるのを見つけました。これをC#にてどう組み込んだらいいのでしょうか。これが組み込めれば解決するのでしょうか
|
1
×VSだとなさそうにみえる→〇VSTO(C#)としました
test
CHANGED
File without changes
|
test
CHANGED
@@ -156,7 +156,7 @@
|
|
156
156
|
|
157
157
|
|
158
158
|
|
159
|
-
selectedRange.Length のようなLengthにあたるものはないのでしょうか。VBAだとlenというものがある(?)らしいのですがVSだとなさそうにみえるのです 。。。
|
159
|
+
selectedRange.Length のようなLengthにあたるものはないのでしょうか。VBAだとlenというものがある(?)らしいのですがVSTO(C#)だとなさそうにみえるのです 。。。
|
160
160
|
|
161
161
|
|
162
162
|
|