2013-07-25 167 views
0

我最近有一個問題,關於如何將單元格值複製到它下面的所有單元格,並根據列A到達空白單元格停止。 postvba如何檢查一個單元格是否沒有格式化或顏色

我工作的Excel表中有許多分隔行,當你向下滾動頁面時,整行上的顏色被填充以分開類別。我希望能夠跳過列A中的這些分隔行,當宏檢查列A中的空白單元格。或者我想只將StopRow分配給沒有格式/無顏色/無值的第一個單元格。

這是我所擁有的,感謝今天早些時候的Ripster,但是我沒有在他的想法中加入適當的if語句。

Sub Example() 
    Dim MasterValue As String 
    Dim StopRow As Long 
    Dim i As Long 

    'Get the master value 
    MasterValue = Range("C5").Value 

    'Get the first blank cell in column A 
    StopRow = Range("A1").End(xlDown).Row 

    'Start at row 6 and continue to the "Stop Row" 
    For i = 6 To StopRow 
     'Set every cell from row 6 in column 3 to the "Master Value" 
     Cells(i, 3).Value = MasterValue 
    Next 
End Sub 

請大家幫忙。 IE

感謝

回答

2

這花了我一段時間,但我發現,解決你的問題。)

如果宏去與不同的顏色對細胞 - 檢查和做沒什麼,下一個「我」被。這應該做你想要的。它可以添加更多的色彩;)

鏈接的顏色 - http://dmcritchie.mvps.org/excel/colors.htm

Sub Example() 

For i = 6 To 1200 
    If Cells(i, 3).Interior.ColorIndex = 1 Then 'here is color black 

    Else 
     If IsEmpty(Cells(i, 1)) = True Then 'if cells in column "A" is empty then stop 
      Exit For 

     Else 
     Cells(i, 3).Value = Range("C5").Value 
     End If 

    End If 

Next i 

末次

+0

而不是使用x,我需要的東西停止在A列的最後一個單元格,所以如果A有單元格1到13有值,並且第14行是一個分色器行,並且A有單元格15到25以及更多值,這意味着我希望宏停止複製A列中沒有值和背景顏色(兩個條件)或第26行的列C中的主值。只需爲x選擇一個數字,這意味着我將擁有每次Excel表更改時更新x ...任何想法? – cheapkid1

+0

好的,我很難理解你寫的東西,所以我們試着逐步分析它。 你說你想在一些條件下一直向下複製主值: 1.如果有彩色背景,複製跳過 2.如果在同一行的列A中沒有值,則複製停止 我理解正確嗎?如果是,應該很容易;) – lowak

+0

是的,這是正確的。 – cheapkid1

1

您的StopRow條件不明確。當單元格具有條件格式規則或僅具有與默認格式不同的格式時,是否要設置StopRow?單元格可能有規則,但可能不適用。無論如何,功能here是你可能會發現的使用。

複製ActiveCondition某處功能模塊中,然後改變你的for循環,像這樣:

For i = 6 To StopRow 
    If ActiveCondition(Cells(i,3))=0 Then StopRow=i : Exit For 
    Cells(i, 3).Value = MasterValue 
Next 

如果您想爲您在字體顏色變化並不是來自條件格式,那麼你會需要一個額外的行:

For i = 6 To StopRow 
     If ActiveCondition(Cells(i,3))=0 Then StopRow=i : Exit For 
     If Cells(1,3).Font.ColorIndex=0 Then StopRow=i : Exit For 
     Cells(i, 3).Value = MasterValue 
    Next 

有更優雅的方式來做到這一點,但這個解決方案是在你的代碼最容易實現的。

希望這會有所幫助。

+0

的StopRow只是應該去的列到包含值的最後一個單元格結束,但現在正如你在圖像中看到的那樣,當涉及到具有顏色的單元格時,它將停止而不是繼續到實際最後一個單元格(沒有背景顏色)。此時不擔心字體顏色。我嘗試了你的解決方案,並且看過Active Condition文檔,我認爲有一種更簡單的方法比包含這樣的大功能模塊更方便,我不記得如何。我認爲這只是一個FormatCondition = false或沿着這些線的東西,??不確定 – cheapkid1

+0

FormatConditions是一個集合對象,因此它將具有.Count屬性。你可以用它來停止你的程序,只要Cells(x,y).FormatConditions.Count = 0我想。我沒有測試過這個。但是現在我相信你已經有足夠的答案知道該從哪裏出發。 – Pane

相關問題