実現したいこと
PowerPointのテーブルでコマンドボタンを押したら、そのセルの色を判断して次の色に変わるというボタンを作成しています。
選択セルが1つの時は上手くいくのですが、選択セルが2つになったら、2回ループされて「RGB(0,204,0)」の色になってしまいます。
解決方法をご教授頂けると助かります。
※選択しているセルは全て「RGB(255,0,0)」とします
※セルを3つ選択してたら、3回ループされます
該当のソースコード
Sub colorchange Dim oSh As Shape Dim oTbl As Table Dim X As Integer Dim Y As Integer With ActiveWindow.Selection.ShapeRange Set oTbl = .Table For Y = 1 To oTbl.Rows.Count For X = 1 To oTbl.Columns.Count If oTbl.Cell(Y, X).Selected Then With oTbl.Cell(Y, X).Shape If .Fill.ForeColor.RGB = RGB(255,0,0) Then .Fill.ForeColor.RGB = RGB(0,0,255) ElseIf .Fill.ForeColor.RGB = RGB(0,0,255) Then .Fill.ForeColor.RGB = RGB(0,204,0) ElseIf .Fill.ForeColor.RGB = RGB(0,204,0) Then .Fill.ForeColor.RGB = RGB(255,255,0) ElseIf .Fill.ForeColor.RGB = RGB(255,255,0) Then .Fill.ForeColor.RGB = RGB(204,0,255) Else .Fill.ForeColor.RGB = RGB(255,0,0) End If End With End If Next Next End With End Sub
試したこと
Ifの部分をCaseにしてみたのですが、結果が変わらないのでその前のForの部分に問題があるのかなと思ったのですが、どのようにすれば良いのか分からず行き詰まってます。
コード自体は色々なサイトを参考にして作成しています。
エラー確認のコードはchatGPTにて作成しました。エラー解消のコードもそもそものやりたいコード作成もchatGPTに質問したのですが、Excelのコードが混じったりとなかなか上手くいかず行き詰まっている所です。
エラー確認のコード
Sub colorchange1 Dim oSh As Shape Dim oTbl As Table Dim X As Integer Dim Y As Integer Dim oColor As Long Dim newColor As Long With ActiveWindow.Selection.ShapeRange Set oTbl = .Table For Y = 1 To oTbl.Rows.Count For X = 1 To oTbl.Columns.Count If oTbl.Cell(Y, X).Selected Then With oTbl.Cell(Y, X).Shape oColor = .Fill.ForeColor.RGB If oColor = RGB(255,0,0) Then newColor = RGB(0,0,255) ElseIf oColor = RGB(0,0,255) Then newColor = RGB(0,204,0) ElseIf oColor = RGB(0,204,0) Then newColor = RGB(255,255,0) ElseIf oColor = RGB(255,255,0) Then newColor = RGB(204,0,255) Else newColor = RGB(255,0,0) End If If oColor <> newColor Then .Fill.ForeColor.RGB = newColor MsgBox "セル("& Y & "," & X & ")の色を変更しました" End If End With End If Next Next End With End Sub
状況がよくわかりません。
> 選択セルが2つになったら、2回ループされて「RGB(0,204,0)」の色になってしまいます。
異なる色のセル2を2つ選択して実行すると、それぞれ次の色になるべきが、2セルとも同色になってしまうと言うことでしょうか?
> 2回ループされて
これの具体的な現象(どんな現象をみてそういう印象を持ったか)は何でしょうか?
> セルを3つ選択してたら、3回ループされます
は、このコードと関係ないことを言ってますか?
このコードはテーブルの全セルについてループしてますけど。3×4のテーブルなら12回。
分かりにくく申し訳ございません。
>異なる色のセル2を2つ選択して実行すると、それぞれ次の色になるべきが、2セルとも同色になってしまうと言うことでしょうか?
記載させていただいた通り、セルはの色は2セルとも同色のRGB(255,0,0)です。コマンドボタン1回クリックでRGB(0,0,255)にしたい所、RGB(0,204,0)になってしまいます。
>これの具体的な現象(どんな現象をみてそういう印象を持ったか)は何でしょうか?
補足に試したコードを追記します。メッセージBOXが計4回出たため2回ループされているのかなと思ってます。
>セルを3つ選択してたら、3回ループされます は、このコードと関係ないことを言ってますか?
このコードで3セルを選択して実行すると、RGB(0,0,255)にしたい所、RGB(255,255,0)になってしまいます。
今回、コード内のRGBが全て違うテイストですが、実際は同系色で濃→薄になるようなRGBのコードが入ってます。
PowerPointの資料全体を見ながら、色を調整する為にこのボタンを作成しています。
拙い説明で申し訳ございません。
回答1件
あなたの回答
tips
プレビュー