Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel .Interior.color索引问题_Excel_Vba - Fatal编程技术网

Excel .Interior.color索引问题

Excel .Interior.color索引问题,excel,vba,Excel,Vba,我有一个sub,它复制列中包含文本的所有单元格,并将它们转置到单独的页面上。它会在变换后更改每个单元格的填充颜色。然后用户可以添加更多数据并重新运行宏,它将通过首先查看填充颜色跳过已复制的单元格 一切正常,只有一个例外。只有复制的单元格在运行宏(预期结果)后变为黄色,但每次输入任何数据时,每个后续单元格都会更改颜色(意外结果)。我尝试添加一行以将下一个空单元格的颜色更改回0,但这没有帮助 运行此宏后,是否有任何方法可以防止Excel重新格式化单元格的颜色 这是完整的潜艇 Sub Transpos

我有一个sub,它复制列中包含文本的所有单元格,并将它们转置到单独的页面上。它会在变换后更改每个单元格的填充颜色。然后用户可以添加更多数据并重新运行宏,它将通过首先查看填充颜色跳过已复制的单元格

一切正常,只有一个例外。只有复制的单元格在运行宏(预期结果)后变为黄色,但每次输入任何数据时,每个后续单元格都会更改颜色(意外结果)。我尝试添加一行以将下一个空单元格的颜色更改回0,但这没有帮助

运行此宏后,是否有任何方法可以防止Excel重新格式化单元格的颜色

这是完整的潜艇

Sub TransposeSubLocation()
Dim sh As Worksheet
Dim sht As Worksheet
Dim lRow As Long
Dim lCol As Long
Dim lYellow As Range
Set sh = Worksheets("Sub Location Lists")
Set sht = Worksheets("Equipment List")
Application.FindFormat.Interior.ColorIndex = 6

For i = 1 To 1000 Step 1
    If sh.Cells(5, i).Value <> "" Then
        lRow = sh.Cells(sh.Rows.Count, i).End(xlUp).Row
        lCol = sht.Cells(5, sht.Columns.Count).End(xlToLeft).Column
        On Error Resume Next
            Set lYellow = sh.Range(sh.Cells(6, i), sh.Cells(lRow, i)).Find(what:="*", after:=sh.Cells(6, i), SearchDirection:=xlPrevious, SearchFormat:=True).Offset(1, 0)

        If lCol > 1 Then
            lCol = lCol + 1
        End If

        If sh.Cells(6, i).Interior.ColorIndex = 6 Then
            sh.Range(lYellow, sh.Cells(lRow, i)).Copy
            sht.Cells(5, lCol).PasteSpecial Transpose:=True
            sh.Range(sh.Cells(6, i), sh.Cells(lRow, i)).Interior.ColorIndex = 6
            'Here I attempted to force it back to no fill but this did not help
            sh.Cells(lRow, i).Offset(1, 0).Interior.ColorIndex = 0

            Else: sh.Range(sh.Cells(6, i), sh.Cells(lRow, i)).Copy
            sht.Cells(5, lCol).PasteSpecial Transpose:=True
            sh.Range(sh.Cells(6, i), sh.Cells(lRow, i)).Interior.ColorIndex = 6
            sh.Cells(lRow, i).Offset(1, 0).Interior.ColorIndex = 0
        End If
    End If
Next
    End Sub
子转置子位置()
将sh设置为工作表
将sht变暗为工作表
暗淡的光线和长的一样
暗淡的lCol尽可能长
昏暗的夜色如射程
Set sh=工作表(“子位置列表”)
Set sht=工作表(“设备清单”)
Application.FindFormat.Interior.ColorIndex=6
对于i=1到1000,步骤1
如果sh.Cells(5,i).值为“”,则
lRow=sh.Cells(sh.Rows.Count,i).End(xlUp).Row
lCol=sht.Cells(5,sht.Columns.Count).End(xlToLeft.Column)
出错时继续下一步
设置lYellow=sh.Range(sh.Cells(6,i),sh.Cells(lRow,i)).Find(what:=“*”,after:=sh.Cells(6,i),SearchDirection:=xlPrevious,SearchFormat:=True)。偏移量(1,0)
如果lCol>1,则
lCol=lCol+1
如果结束
如果sh.Cells(6,i).Interior.ColorIndex=6,则
sh.Range(lYellow,sh.Cells(lRow,i)).复制
短细胞(5,lCol).特殊转置:=真
sh.Range(sh.Cells(6,i),sh.Cells(lRow,i)).Interior.ColorIndex=6
“在这里,我试图迫使它回到没有填充,但这没有帮助
sh.Cells(lRow,i).偏移量(1,0).Interior.ColorIndex=0
其他:sh.Range(sh.Cells(6,i),sh.Cells(lRow,i))。复制
短细胞(5,lCol).特殊转置:=真
sh.Range(sh.Cells(6,i),sh.Cells(lRow,i)).Interior.ColorIndex=6
sh.Cells(lRow,i).偏移量(1,0).Interior.ColorIndex=0
如果结束
如果结束
下一个
端接头

您看到的错误类型是什么?请删除on error语句,然后使用F8逐步完成代码。也许你能用这种方法抓住罪犯。没有错误。代码运行良好。代码中的一切都按预期工作。但是用vba重新格式化单元格颜色会导致excel在数据输入其他单元格时自动更改其单元格颜色。如果单元格包含任何内容,则几乎类似于条件格式。如果我使用vba将A6:A10的单元格颜色更改为黄色,然后手动将数据输入A11,A11在输入后将自动变为黄色。这将持续到A12、A13、A14等。我认为这不是由上述代码引起的。Excel似乎是通过检测当前区域的格式,然后尝试继续。在这种情况下,您需要在单元格
A11
中手动覆盖此选项。从那时起,它将不会影响。我签入了
Excel>>选项>>校对
,但不幸的是,这里的选项有限。