返回区域中的单元格内容



昨天我在这里学习了如何将一行复制到第二张纸上。

Sub maJolieProcedure(Texte As String)
With Worksheets("employes").Range("A:A")
Set c = .Find(what:=Texte)
If Not c Is Nothing Then
firstAddress = c.Row
Worksheets("employes").Rows(firstAddress).Copy _
Destination:=Worksheets("rapport").Range("A1")
MsgBox "Ok"
Else
MsgBox "Nok"
End If
End With
End Sub

为了尊重第二张工作表的格式,我想逐个复制和粘贴每个单元格的内容。

我能识别线路号码。但是,我不知道Range对象如何逐个返回每个单元格。例如,C3内容如果为Rows = 3

非常感谢。

如果不想将格式从一个区域粘贴到另一个区域,则只粘贴值。

Worksheets("employes").Rows(firstAddress).Copy
Worksheets("rapport").Range("A1").PasteSpecial xlValues

这对所有范围都是一样的,无论是1个细胞还是100万个细胞。复制过程将主题作为一个块复制到内存中。任何解析都必须在执行Copy指令之前完成。另一种选择是将范围读取到数组中。

Dim Arr As Variant
Arr = Worksheets("employes").Rows(firstAddress).Value

这将创建一个由1行和约16000列组成的3D阵列。你可能会决定把你的热情限制在你需要的东西上。

With Worksheets("employees")
Arr = .Range(.Cells(firstAddress, 1), .Cells(firstAddress, .Columns.Count).End)xlToLeft)).Value
End With

注意With语句中的前导周期。每个这样的句点代表With语句中提到的对象。

如果您的目标是尊重第二张工作表的格式,则不需要浪费时间逐个单元格进行复制。

做一个特殊的粘贴更有效,就像你用鼠标做的那样:

Range("A1").Copy
Range("B1").PasteSpecial Paste:=xlPasteValues

如果你需要的话,在更大的范围内也能很好地工作:

Range("A1:A12").Copy
Range("B1:B12").PasteSpecial Paste:=xlPasteValues

甚至

Range("A1:A12").Copy
Range("D3").PasteSpecial Paste:=xlPasteValues

如果您的目标是真正单独访问一个范围的所有单元格,那么只需对该范围进行迭代。例如:

For Each cell In Range("A1:A12")
cell.Value = cell.Value + 2
Next cell

相关内容

最新更新