【问题标题】:Trying to fill a colored line above filled in cells试图在填充单元格上方填充彩色线条
【发布时间】:2021-01-25 09:23:30
【问题描述】:

我的代码是将颜色填充到填充行上方的行中。 上面有2行文字是最底行的2行需要填色吗? 它们应该链接到函数上方的 Sub 中显示的范围 我真的无法理解前几天它似乎工作但现在它停止工作了? 我认为潜艇是正确的只是功能似乎失败了? 不确定如何将两者联系在一起?

   Private Sub Fill_Color_Click()
   Dim Com As ComboBox
   Dim ws As Worksheet

   Set Com = Me.Fill_Color

   With ws
   
    Select Case Com.Value
        Case ("Fill Color 1 Page Job Card")
            Color .Range("A13:Q61")

        Case ("Fill Color 2 Page Job Card")
            Color .Range("A13:Q61")
            Color .Range("A66:Q120")
   
        Case ("Fill Color 3 Page Job Card")
             Color .Range("A13:Q61")
            Color .Range("A66:Q122")
            Color .Range("A127:Q178")
            
        Case ("Fill Color 4 Page Job Card")
            Color .Range("A13:Q61")
            Color .Range("A66:Q122")
            Color .Range("A127:Q183")
            Color .Range("A188:Q244")

        Case ("Fill Color 5 Page Job Card")
            Color .Range("A13:Q61")
            Color .Range("A66:Q122")
            Color .Range("A127:Q183")
            Color .Range("A188:Q244")
            Color .Range("A249:Q299")
    End Select
    
End With


End Sub

Function Color(rng As Range)

Dim row As Range
Dim sheet As Worksheet
Set ws = ThisWorkbook.Sheets("Job Card Master")
Dim EmptyRowNum As Integer

For i = 1 To rng.Rows.Count

    Set row = rng.Rows(i)
    If WorksheetFunction.CountA(row) = 0 Then
        EmptyRowNum = EmptyRowNum + 1
    End If
    If EmptyRowNum = 2 Then
        EmptyRowNum = 0
        row.Interior.ColorIndex = 4
    End If

Next i

End Function
       

【问题讨论】:

  • 我对您的问题一无所知,抱歉...请尝试编辑您的问题,并在一张图片中显示最初的情况,另一张(至少)与您需要完成的事情有关。
  • Com.Value 在哪里以及如何声明和赋值?
  • 尝试调试时遇到什么错误?你为什么不纠正这些错误?或者,如果您需要他们的帮助,为什么不提及他们?
  • Ive shown 2 pictures above which should explain what is happening. Sorry to be thick Ive 现在声明了 com.Value。
  • 它不会触发代码所以没有任何错误?

标签: vba colors named-ranges


【解决方案1】:

您有一个命名错误,sheetwsDim sheet as WorksheetColor() 函数中,但随后您设置了 ws = ...

反正放错地方了,需要移到Fill_Color_Click()

Private Sub Fill_Color_Click()

    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Job Card Master")

这样对范围的引用才有意义。

【讨论】:

  • 我按照你说的做了,好像有 2 到 3 次,现在就停止工作了?
  • 好吧,我希望您明白我无法从这里看到您的办公桌,而且我无法猜测问题可能出在哪里。我的测试代码在这里工作的次数与我点击触发测试的按钮一样多。你需要做一些调试。首先在Set ws = ... 行上设置断点,然后激活Fill_Color_Click()。执行在断点处停止。现在您可以使用 F8 键一步一步地前进。执行在哪里偏离了您的预期。到那时,您期望它做什么以及为什么?它会做什么?
  • 我尝试过 F8 测试,但它跳过了代码。我可以把我的工作簿寄给你吗?
  • 对不起,没有。这不是 SO 的工作方式。重要的是您要传达您已采取的步骤,以确认您确实理解并且您确实按照我的要求进行了操作。 1)您是否设法在Set ws = ThisWorkbook.Sheets("Job Card Master") 上设置断点? 2) 这是Fill_Color_Click() 中的第一个执行行吗? 3)什么触发Fill_Color_Click()
  • 我确实在(“Jobcard Master”)上设置了一个断点。但没有快乐?触发它的是一个组合框命令。它还在跳过代码??
猜你喜欢
  • 1970-01-01
  • 2018-08-31
  • 1970-01-01
  • 2015-06-04
  • 2014-04-27
  • 2020-01-11
  • 1970-01-01
  • 2015-04-04
  • 2017-01-05
相关资源
最近更新 更多