仅对可见单元格使用Case语句时接收类型不匹配

时间:2017-05-04 05:42:41

标签: excel vba excel-vba

我在粗线上收到有关类型不匹配的错误。 Case语句引用的单元格值只能看到,但我不确定Case语句是否能够读取按可见性排序的单元格的值。

该功能是对单元格进行排序以匹配CHART ID,并在搜索匹配时插入与其关联的数据集,如果它不是代码将检查单元格是否&# #39; s是空的。

如果单元格不为空,则代码将通过将k递增1来移动到下一个单元格并继续尝试通过将n减去1来插入数据,以便它通过下一个单元格运行数据。

这是循环的,直到变量中的所有计数(例如Wet_etch)被插入到图表中,然后继续EXPOSEPI_CURE(我已经这样做了)尚未编码直到我完成了WET_Etch

请问我是否必须验证运行代码时获得的值。

    Function SetData(WET_ETCH, EXPOSE, PI_CURE As Long)

    Dim n, k As Integer

    Set ws = Sheets("Sheet2")
    Set sh(1) = Sheets("Data_Wet Etch")
    Set sh(2) = Sheets("Data_EXPOSE")
    Set sh(3) = Sheets("Data_PI CURE")

    ws.Activate

    'Clear filter
    If ActiveSheet.AutoFilterMode Then ActiveSheet.ShowAllData
        On Error Resume Next
        ActiveSheet.ShowAllData
        On Error GoTo 0

      ActiveSheet.Range("$A$1:$J$63") _
    .AutoFilter Field:=8, Criteria1:=RGB(255, 0 _
    , 0), Operator:=xlFilterFontColor

     ActiveSheet.Range("$A$1:$J$63") _
    .AutoFilter Field:=2, Criteria1:="WET ETCH", Operator:=xlFilterValues




    'Loop through count of Wet_Etch
    For n = 1 To WET_ETCH

            'To loop through available data columns for input
            k = 1
            If k <= 7 Then

                    'Check cells for chart ID to set data or insert new data
                    'Code to set case as only visible rows on sheet
                    Select Case ws.Range("D" & n + 1).SpecialCells(xlCellTypeVisible)
                    ***Case Is = sh(1).Range("B" & 84 + k)***

                        'Set PPK value
                        sh(1).Range("T" & 84 + k) = _
                        ws.Range("H" & n + 1).SpecialCells(xlCellTypeVisible)

                    'Check for empty line and inserts chart title
                    Case Is = ws.Range("B" & 83 + k) = ""

                        'Set PPK value
                        sh(1).Range("T" & 83 + k) = _
                        ws.Range("H" & n + 1).SpecialCells(xlCellTypeVisible)
                        'Set Chart ID
                        sh(1).Range("B" & 83 + k) = _
                        ws.Range("D" & n + 1).SpecialCells(xlCellTypeVisible)

                    Case Else
                    k = k + 1
                    n = n - 1
                    End Select
            End If
     Next n

            'Clear filter
            If ActiveSheet.AutoFilterMode Then ActiveSheet.ShowAllData
                On Error Resume Next
                ActiveSheet.ShowAllData
                On Error GoTo 0


End Function

0 个答案:

没有答案