【发布时间】:2017-08-11 14:54:17
【问题描述】:
对于 Excel VBA 来说还是很新的。我需要有条件地从另一个工作表上从左到右读取的单元格中复制颜色填充,并将这些颜色复制到列中的另一个工作表上。我遇到的最大问题是组织我的嵌套 for 循环。这个想法是用颜色表示的输入填充一个 7x7 数组。 7x7 数组本身将完全由列填充,但它会读取另一个工作表中的行。下面的代码不起作用。
Sub colorfillcopy()
Dim i As Integer, j As Integer, k As Integer, l As Integer, m As Integer,
lastrow As Long
Dim Sourcews As Worksheet, Transferws As Worksheet
Dim row1 As Range, row2 As Range, row3 As Range, row4 As Range, row5 As
Range, row6 As Range, row7 As Range
Dim rngCopy As Range
Dim rngPaste As Range
Set Sourcews = ThisWorkbook.Sheets("Source")
Set Transferws = ThisWorkbook.Sheets("Transfer")
Transferws.Range("row1:row7").Interior.Color = xlNone
lastrow = Sourcews.Cells(Sourcews.Rows.Count, "A").End(xlUp).row
lastrowgrid = Transferws.Cells(Rows.Count, 3).End(xlUp).row
For i = 2 To lastrow
If Sourcews.Range("AA" & i).Value = " Conditionally data" And Transferws.Cells(18,
Sourcews.Columns.Count).End(xlToLeft).Column Then
For j = 1 To 7
For k = 1 To 7
Sourcews.Range("8 ,j+1").Interior.Color =
Transferws.Range("P:V").Interior.Color
Next k
Next j
End If
Next i
End Sub
【问题讨论】:
-
下面的代码不起作用 - 这很模糊。请阅读如何create a complete, minimal, verifiable example 并相应地编辑您的问题。
-
这里有两个部分,在 SO 上,会导致它中断。不确定是否只是因为您的复制/粘贴。
If Sourcews.Range("AA" & i)...线需要全部在一个。你在.Cells(18,之后打破它。此外,引用的Sourcews.Range("8,j+1")...行 A) 没有意义,并且您还需要在=之后的同一行上的Transferws.Range(...), 或 通过添加_将两者连接起来在=之后。首先,您能否在此处编辑/更新代码以匹配您在 Excel 中的代码?