Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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 VBA在特定单元格中添加值_Excel_Vba_Loops - Fatal编程技术网

Excel VBA在特定单元格中添加值

Excel VBA在特定单元格中添加值,excel,vba,loops,Excel,Vba,Loops,得到了你们的帮助,创建了一个代码,将一些值从一个工作簿复制到另一个工作簿。不过我还有一个问题。 我希望将som静态信息写入J列中与其他复制信息位于同一行的单元格中。 如何将其添加到循环中 我试过: wsDest.Cells(DestRow, "J").Value = "HVD" 但它只添加第一行中的值,而不添加其余的值。没有错误,但它似乎不会像中的其他代码那样为每个循环 Option Explicit Public Sub CopyCells() Dim wsSrc As Works

得到了你们的帮助,创建了一个代码,将一些值从一个工作簿复制到另一个工作簿。不过我还有一个问题。 我希望将som静态信息写入J列中与其他复制信息位于同一行的单元格中。 如何将其添加到循环中

我试过:

wsDest.Cells(DestRow, "J").Value = "HVD"
但它只添加第一行中的值,而不添加其余的值。没有错误,但它似乎不会像中的其他代码那样为每个循环

Option Explicit

Public Sub CopyCells()
    Dim wsSrc As Worksheet 'define source sheet
    Set wsSrc = ThisWorkbook.Worksheets("Blad1")

    Dim wbDest As Workbook 'define destination workbook
    Set wbDest = Workbooks.Open("C:\Temp\Ändringar bef objekt.xlsx")

    Dim wsDest As Worksheet 'define destination sheet
    Set wsDest = wbDest.Worksheets("Ändringsdata")

    Dim DestRow As Long
    DestRow = 2 'start in row 2 in destination sheet

    wsSrc.Parent.Activate: wsSrc.Activate

    Dim Rng As Range
    For Each Rng In Selection.Areas
        Rng.Resize(, 1).Copy Destination:=wsDest.Cells(DestRow, "A") 'copy A to A
        Rng.Resize(, 1).Offset(, 5).Copy Destination:=wsDest.Cells(DestRow, "D") 'copy F to D
        **wsDest.Cells(DestRow, "J").Value = "HVD" 'write HVD in column J same row**
        DestRow = DestRow + Rng.Rows.Count 'move DestRow to next free row
    Next Rng
End Sub

我想你误解了你的
对于每个
的工作原理。它不会在每一行或每一个单元格中循环。它循环通过
区域
,这是
范围
的集合。通常,此集合中只有一个
范围
,但如果使用Ctrl键选择单元格,则在
区域
中有更多元素

因此,您的代码获取一个这样的“区域”,并将其第一列复制到A列,然后将其第五列复制到D列,并将“HVD”输入单个单元格(
单元格(DestRow,“J”)
)。如果要在每行中输入此值,则必须调整此单元格的大小。要做到这一点,您可以使用:

wsDest.Cells(DestRow, "J").Resize(Rng.Rows.Count).Value = "HVD"

另外,请记住,您可以通过将光标放在宏代码中并按F8键来调试代码。这将逐行运行您的代码,所有更改将立即显示在工作表中。

有人有任何建议吗?非常感谢您的解释和帮助!