2016-03-16 204 views
0

我有三列Excel表:更改單元格的值格式

員工數量

員工姓名

可用性(有些已經沒有什麼價值)

我想要做的是當可用性值從數字更改爲無,員工編號員工名稱與該行關聯得到刪除線。 此外,當可用性號碼被添加刪除線消失。我希望這個代碼在按下命令按鈕時運行。截至目前代碼運行時,按下按鈕,但那些可用性已經沒有什麼,並且不會改變的值正在刪除刪除線。有沒有辦法,只有可用性值改變爲沒有,那些已經沒有什麼可以得到刪除線? 我已經在下面寫了一些代碼,但我不知道我是否正朝着正確的方向前進。

Sub AircraftChange(ByVal Target As Range) 
Dim watchrange As Range, r As Range, rw As Long 
Dim intersectrange As Range, endrow As Long 

endrow = Cells(Rows.count, "B").End(xlUp).Row 
Set watchrange = Range("E2:E" & endrow) 
Set intersectrange = Intersect(Target, watchrange) 

If intersectrange Is Nothing Then Exit Sub 

For Each r In intersectrange 
rw = r.Row 
If r.Value = "" Then 
    Range("B" & rw & ":C" & rw).Font.Strikethrough = True 
Else 
    Range("B" & rw & ":C" & rw).Font.Strikethrough = False 
End If 
Next r 
End Sub 

有人可以幫我嗎?

預先感謝您 enter image description here

+0

由於您有一個命令按鈕,並且想要控制更新,您必須使用VBA。但是,如果您想自動更新格式(帶或不帶刪除線),那麼您還可以使用條件格式和無VBA代碼來完成此操作。 – Ralph

+0

可用性列由用戶操縱,一旦用戶添加或刪除了可用性值中的數字,我想點擊命令按鈕,員工姓名和號碼將得到刪除線或刪除一個,或者沒有任何變化發生在員工編號和ID –

+0

我已經添加了我正在使用的文件的圖片...您可以看到可用性值是第4列中的那些數字...所以我想要發生的是如果這些值中的任何一個顯示的變化沒有任何變化,或者如果添加了值,刪除線就會消失。但那些在綠色和橙色的底部沒有可用性價值我不希望這些得到刪除線,因爲他們永遠不會改變..我只需要這些值從某個東西改變爲無或從無到有 –

回答

0

有關你的問題,任務可以在VBA使用數組存儲在列d之前的值一樣顯示在下面的代碼片段來完成:

Dim ColumArray(65000) As String 

Private Sub Worksheet_Change(ByVal Target As Excel.Range) 
    If Target.Column = 4 Then 
     ThisRow = Target.Row 
     If Target.Value = "" And ColumArray(ThisRow) <> "" Then 
      Range("B" & ThisRow & ":C" & ThisRow).Font.Strikethrough = True 
     Else 
      Range("B" & ThisRow & ":C" & ThisRow).Font.Strikethrough = False 
     End If 
     ColumArray(ThisRow) = Target.Value 
    End If 
End Sub 

請注意,此過程不需要Button事件:它將在列「D」中的任何更改時自動運行。或者,您可以將其封裝到您的Sub AircraftChange(ByVal Target As Range)中並在按鈕單擊事件中運行它。此外,您可以設置與列「B」最後一行相關的數組ColumArray(65000)的最大索引(按照您的代碼:endrow = Cells(Rows.count,「B」)。End(xlUp).Row) 。

最普遍的解決方案(雖然有點更長)將是對Workbook_Open創建放置在加入Excel中VBA代碼模塊(例如模塊1)存儲的值的全局陣列,例如,Worksheet(1)列「d」,並添加Sub程序就像上面的Worksheet(1)所示。

希望這有助於。

相關問題