プロが教える店舗&オフィスのセキュリティ対策術

1つの行でセルにとびとびで色が付いていて、左から数えて一番最初に色が付いている列と最後に色が付いている列のアルファベットを取得する方法はありますか。セルの範囲自体はA列からAKA列と決まっています。調べたい行は4行目です。セルの色は決まっておりません。
どなたか教えていただけますでしょうか。

A 回答 (3件)

RangeのInterior.colorプロパティを判定すれば良いでしょう


背景色が未指定の場合は『16777215』が返ってきますので、それ以外の場合に背景色が設定されていると判断できます
A列は1、AKA列は963ですのでColumn値をループして判定すれば可能かと考えます
--------------------------------------------------------------------------------
 For intC = 1 To 963
  IF Cells(4, intC).Interior.Color = 16777215 Then
  Else
   Msgbox Cells(4, intC).Value
  End If
 Next
 For intC = 963 To 1 Step -1
  IF Cells(4, intC).Interior.Color = 16777215 Then
  Else
   Msgbox Cells(4, intC).Value
  End If
 Next
--------------------------------------------------------------------------------
あとはメッセージボックスの部分で取得している値を参照するだけです
    • good
    • 0
この回答へのお礼

最後のValueをColumnにしたらやりたいことができました!本当にありがとうございました。

お礼日時:2019/09/18 11:33

こんにちは!



No.1さんと殆どやり方は同じになりますが、
一例です。

Sub Sample1()
 Dim j As Long
 Dim myFirst As String, myEnd As String
 Dim myFlg As Boolean

  '//▼最初の列を取得//
  For j = 1 To Range("AKA4").Column
   If Cells(4, j).DisplayFormat.Interior.ColorIndex <> xlNone Then
    myFirst = Cells(4, j).Address(False, False)
    myFlg = True
    Exit For
   End If
  Next j

  '//▼最後の列を取得//
  For j = Range("AKA4").Column To 1 Step -1
   If Cells(4, j).DisplayFormat.Interior.ColorIndex <> xlNone Then
    myEnd = Cells(4, j).Address(False, False)
    myFlg = True
    Exit For
   End If
  Next j
   If myFlg = True Then
    MsgBox "最初の列:" & Left(myFirst, Len(myFirst) - 1) & "列" & vbCrLf & _
     "最後の列:" & Left(myEnd, Len(myEnd) - 1) & "列"
   Else
    MsgBox "色付きセルなし!"
   End If
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0

こんにちは



最初の色付きセルの列名(アルファベット)を求めるサンプルです
(条件付き書式で着色されているセルも対象とします)

最大のセルを求める場合も同様にできるでしょう。


Sub Sample()
Dim c As Long, r As Long, s As String

r = 1
c = 1
s = "該当なし"

While c < 964 And Cells(r, c).DisplayFormat.Interior.ColorIndex = xlColorIndexNone
 c = c + 1
Wend

If c < 964 Then
 s = Columns(c).Address(ColumnAbsolute:=False)
 s = Left(s, Int(Len(s) / 2))
End If

MsgBox "最初の列は " & s

End Sub
    • good
    • 0
この回答へのお礼

こちらのプログラムでも問題なくできました!ありがとうございました。

お礼日時:2019/09/18 11:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!