【问题标题】:Column and Row Indexing - VBA列和行索引 - VBA
【发布时间】:2018-04-24 03:37:50
【问题描述】:

我正在尝试在 excel 宏 (VBA) 中编写执行以下操作的内容:

For 'column X' of 'spreadsheet'
     Copy range(row(1):row(5)
     Paste to 'other spreadsheet' in range (row(1):row(5)) and column(Y)

我希望它循环遍历电子表格中每一列的第一个电子表格。这是我对 1 列的内容:

Sheets("Info").Range("B3:B6").Value = Worksheets("Temp").Range("HK5:HK8").Value

  Sheets("Info").Range("C3:C6").Value = Worksheets("Temp").Range("HK10:HK13").Value

这是我想要做的,但是对于第一个电子表格中的每一列(有 300 列,手动会很乏味)。

编辑:这是我发现的另一种可能有助于解释下面留下的 cmets 的方法:

For i = 2 To 3
    Worksheets("Info").Range(Cells(3, i), Cells(6, i)).Value = Worksheets("Temp").Range(Cells(5, i), Cells(8, i)).Value
Next i

我希望这在列 (2 - 290) 上循环,目前仅从第 2 列到第 3 列进行测试。我想要来自第 5-8 行的每一列 ('i') 的 TEMP 工作表中的单元格,并且我想将其放入第 3-6 行 ('i') 列的 INFO 工作表中。希望这会有所帮助!

【问题讨论】:

  • 不清楚您要达到的目标。从工作表“Temp”中的 HK 列获取数据并将其拆分为工作表“Info”中的多个列?您如何定义要使用的范围?行(1:5);范围(“B3:B6”);范围(“HK5:HK8”)?如何增加 HK 列中的行数?
  • 录制一个可以满足您需求的宏 - 并显示代码。再次重复并显示代码。同意@J.Doe - 您的伪代码与您的描述不符

标签: vba excel


【解决方案1】:

您的描述不一致,我不确定您的最终代码有什么问题。我留下了一个注释掉的调试语句,这样你就可以看到正在使用的范围。

但是

  1. 在代码顶部使用 Option Explicit
  2. 确保将 i 声明为 Long
  3. ScreenUpdating 开关以加快性能
  4. 使用变量来保存工作表
  5. 用他们的工作表完全限定Cells 引用

    Public Sub test()
    
    Dim i As Long
    Dim wsInfo As Worksheet
    Dim wsTemp As Worksheet
    Set wsInfo = ThisWorkbook.Worksheets("Info")
    Set wsTemp = ThisWorkbook.Worksheets("Temp")
    
    Application.ScreenUpdating = False
    For i = 2 To 290
       ' Debug.Print wsInfo.Name & "!" & wsInfo.Range(wsInfo.Cells(3, i), wsInfo.Cells(6, i)).Address & " = " & wsTemp.Name & "!" & wsTemp.Range(wsTemp.Cells(5, i), wsTemp.Cells(8, i)).Address
        wsInfo.Range(wsInfo.Cells(3, i), wsInfo.Cells(6, i)).Value = wsTemp.Range(wsTemp.Cells(5, i), wsTemp.Cells(8, i)).Value
    Next i
    Application.ScreenUpdating = True
    End Sub
    

【讨论】:

    猜你喜欢
    • 2015-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-03
    • 2017-07-05
    相关资源
    最近更新 更多