• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マクロ IF分岐 空白行は空白を返す)

マクロで空白行の処理方法についての質問

このQ&Aのポイント
  • マクロで条件付き書式設定で太字が設定された2列の行に〇を付ける処理を作成したが、空白行の処理がうまくいかない。
  • 空白行がある場合に、空白を返すようにしたいが、現在は〇が入力されてしまう。
  • 空白行以外の行は正しく太字なら〇が付いている。空白行を空白にするにはどうすればいいか。

質問者が選んだベストアンサー

  • ベストアンサー
  • SI299792
  • ベストアンサー率47% (772/1616)
回答No.3

どのような条件の時に、太字にしているのかわかりませんが、条件付き書式で空白の時に太字になるように設定してあるのではないでしょうか。 空白でなければという条件を追加するのが一番簡単だと思います。 If文を置き換えてみて下さい。 If Cells(nRow, 9) > "" And Cells(nRow, 10) > "" And Cells(nRow, 9).DisplayFormat.Font.Bold And Cells(nRow, 10).DisplayFormat.Font.Bold Then = Trueはなくてもいいので除きました。 別質問で、Trueがわからないといっていましたが、ここで使っているではありませんか。(笑)

honeybeans
質問者

お礼

空白でなければ、はそうやるのですね。勉強になりました。たくさん教えていただきありがとうございます。

その他の回答 (4)

回答No.5

【追加訂正】無駄なIf-Then文を省略 よくよく考えたら、(1)isBoldの初期値設定、(2)If-Then文による分岐は無駄。そういうことで最訂正しておきます。無理をすれば、1行で書けるってことです。 Option Explicit Sub test()   Dim isValue As Boolean   Dim isBold As Boolean   Dim I    As Integer   For I = 1 To 10     isValue = Len(Cells(I, 2) & "") * Len(Cells(I, 3) & "")     isBold = Cells(I, 2).DisplayFormat.Font.Bold * Cells(I, 3).DisplayFormat.Font.Bold     Cells(I, 1) = Mid("○", 1, Abs(isValue * isBold))   Next I End Sub

回答No.4

【訂正】No.3の回答を見て・・・ やっぱり、最初に書いたコードでも動くのではと思ってテスト。すると、問題なく動作。単なる、Cells→Cell のタイプミスでした。よって、先の回答を訂正。 Option Explicit Sub test()   Dim isValue As Boolean   Dim isBold As Boolean   Dim I    As Integer   For I = 1 To 10     isBold = False     isValue = Len(Cells(I, 2) & "") * Len(Cells(I, 3) & "")     If isValue Then       isBold = Cells(I, 2).DisplayFormat.Font.Bold * Cells(I, 3).DisplayFormat.Font.Bold     End If     Cells(I, 1) = Mid("○", 1, Abs(isBold))   Next I End Sub

回答No.2

【お詫び】1行消すのを忘れていた! Sub test()   Dim isValue As Boolean   Dim isBold As Boolean   Dim I    As Integer   For I = 1 To 10     isBold = False     isValue = Len(Range(Cells(I, 2), Cells(I, 2)).Value & "") * Len(Range(Cells(I, 3), Cells(I, 3)).Value & "")     If isValue Then       isBold = Cells(I, 2).DisplayFormat.Font.Bold * Cells(I, 3).DisplayFormat.Font.Bold     End If     Cells(I, 1) = Mid("○", 1, Abs(isBold))   Next I End Sub Cells(I, 1) = Mid("○", 1, Abs(isBold)) は、最後の1行のみで十分。

回答No.1

Excel未経験の70歳になる爺が挑んでみた。 一回目:なるほど空白行もOが付いた。 これは、BOLDを指定しているので当たり前のこと。そこで、空行か否かをチェックすることにした。でも、そんな知識も経験もない。で、Cells Value で検索した。結果、次のようなコードを書いてみた。 Sub test()   Dim isValue As Boolean   Dim isBold As Boolean   Dim I    As Integer   For I = 1 To 10     isBold = False     isValue = Len(Range(Cells(I, 2), Cells(I, 2)).Value & "") * Len(Range(Cells(I, 3), Cells(I, 3)).Value & "")     If isValue Then       isBold = Cells(I, 2).DisplayFormat.Font.Bold * Cells(I, 3).DisplayFormat.Font.Bold       Cells(I, 1) = Mid("○", 1, Abs(isBold))     End If     Cells(I, 1) = Mid("○", 1, Abs(isBold))   Next I End Sub 添付図のような結果を得た。 PS、空白チェック要領が正しいかどうかは自信がない。でも、一応は成功しているような???

honeybeans
質問者

お礼

なんども回答いただきありがとうございます。試してみます。

関連するQ&A