EXCEL VBA代码未将范围复制到另一张工作表

扎尔·巴赫拉莫夫(Zaur Bakhramov)

我有3张纸:DATA,BUILD和RESULT。DATA-包含所有数据BUILD-通过VBA过程(如下)和命令按钮进行迭代的1行。结果-我需要在其中放置BUILD表的每个迭代行。

代码的以下部分预计将向RESULTS表中添加新行,但是却没有达到我的预期。我得到的是,结果表中的行实际上是被复制的,但是方式很奇怪。有时在2567行中,有时在237行中,等等。因此,我无法真正理解逻辑,vba如何确定将复制的行放入行中。

Sheets("RESULTS").Range("A2" & i + 1).Value = Sheets("BUILD").Range("D4").Value 'League Name
Sheets("RESULTS").Range("B2" & i + 1).Value = Sheets("BUILD").Range("E4").Value 'Home Team
Sheets("RESULTS").Range("C2" & i + 1).Value = Sheets("BUILD").Range("F4").Value 'Away Team

这是完整的代码:

Sub btn_NextMatch()
 Application.ScreenUpdating = False
 Application.Volatile
 Dim Last_row As Double
 Dim Last_Col As Integer
 Dim i As Integer
 Dim sheet As String
 sheet = ActiveSheet.Name


 Sheets("BUILD").Select
 i = Range("A1").Value
 
 Sheets("DATA").Select
 Last_row = Range("A" & Rows.Count).End(xlUp).Row
 Last_Col = ActiveSheet.Cells.Find(What:="*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, LookIn:=xlValues).Column
 Last_colletter = Split(Cells(1, Last_Col).Address, "$")(1)
 If i = Last_row Then
 i = 1
 End If

        Sheets("BUILD").Range("C2").Value = Sheets("DATA").Range("C" & i + 1).Value 'MatchID
        
        Sheets("BUILD").Range("D4").Value = Sheets("DATA").Range("D" & i + 1).Value 'League Name
        Sheets("BUILD").Range("E4").Value = Sheets("DATA").Range("F" & i + 1).Value 'Home Team
        Sheets("BUILD").Range("F4").Value = Sheets("DATA").Range("G" & i + 1).Value 'Away Team

Sheets("BUILD").Select

If i = Last_row Then
Range("A1").Value = 1
Else
    Range("A1").Value = i + 1
    Sheets("RESULTS").Range("A2" & i + 1).Value = Sheets("BUILD").Range("D4").Value 'League Name
    Sheets("RESULTS").Range("B2" & i + 1).Value = Sheets("BUILD").Range("E4").Value 'Home Team
    Sheets("RESULTS").Range("C2" & i + 1).Value = Sheets("BUILD").Range("F4").Value 'Away Team
End If


Application.ScreenUpdating = True

Sheets(sheet).Select

End Sub

有什么想法吗?

谢谢!

达雷尔

我不建议使用偏移来解决以前的问题。以下是代码中已更正的几项:

  1. 将最后一行,一列等声明为LongExcel中有超过一百万行,并且整数最多只能处理32,767。之后,您将重载该值。

  2. 通过将它们设置为变量来缩短工作簿名称。无需将Dim作为字符串。

  3. 避免SelectActivate通过限定您的工作表和变量。这意味着根据需要提供完整的信息以指定位置,ThisWorkbook.Worksheets("Sheet1").Range("A1")Range("A1")这可以是任何工作表。这不仅可以确保正确的位置,而且可以通过避免更改工作表来加快代码的速度。

     Sub btn_NextMatch()
     Application.ScreenUpdating = False
     Application.Volatile
     Dim Last_row As Long
     Dim Last_Col As Long
     Dim i As Long
    
     Dim wks1 As Worksheet
     Dim wks2 As Worksheet
     Dim wks3 As Worksheet
    
     Set wks1 = ThisWorkbook.Worksheets("BUILD")
     Set wks2 = ThisWorkbook.Worksheets("DATA")
     Set wks3 = ThisWorkbook.Worksheets("RESULTS")
    
     i = wks1.Range("A1").Value
    
     Last_row = wks2.Range("A" & Rows.Count).End(xlUp).Row
     Last_Col = wks2.Cells.Find(What:="*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, LookIn:=xlValues).Column
     Last_colletter = Split(wks2.Cells(1, Last_Col).Address, "$")(1)
     If i = Last_row Then
         i = 1
     End If
    
         wks1.Range("C2").Value = wks2.Range("C" & i + 1).Value 'MatchID
         wks1.Range("D4").Value = wks2.Range("D" & i + 1).Value 'League Name
         wks1.Range("E4").Value = wks2.Range("F" & i + 1).Value 'Home Team
         wks1.Range("F4").Value = wks2.Range("G" & i + 1).Value 'Away Team
    
     If i = Last_row Then
        wks1.Range("A1").Value = 1
     Else
         wks1.Range("A1").Value = i + 1
         wks3.Range("A" & i + 1).Value = wks1.Range("D4").Value 'League Name
         wks3.Range("B" & i + 1).Value = wks1.Range("E4").Value 'Home Team
         wks3.Range("C" & i + 1).Value = wks1.Range("F4").Value 'Away Team
     End If
    
     Application.ScreenUpdating = True
    End sub
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

VBA Excel将行从一张工作表复制到另一张工作表中具有特定值的行

来自分类Dev

Excel VBA计算过滤的单元格并复制到另一张表

来自分类Dev

将大量行从一张工作表复制到另一张工作表,但Excel 2010中的空白行除外

来自分类Dev

将 Excel 中匹配记录的行值从一张工作表复制到另一张工作表

来自分类Dev

如何将数据从一张excel表复制到另一张excel表?

来自分类Dev

Excel宏将范围从一张纸复制到另一张纸

来自分类Dev

无法将列中的所有数据复制到另一张表-Excel VBA

来自分类Dev

Excel,循环浏览XLSM文件并将行复制到另一张表

来自分类Dev

excel根据单元格值将行复制到另一张表

来自分类Dev

Excel VBA 2016根据计算将范围单元格传递到另一张工作表

来自分类Dev

使用Excel中的按钮将信息从一张工作表复制到新行的另一工作表

来自分类Dev

将Excel行从一张纸复制到另一张纸

来自分类Dev

Excel VBA:如何将数据推到另一张工作表上的独占范围?

来自分类Dev

Excel VBA-从一张纸复制到另一张纸>仅复制一行

来自分类Dev

Excel VBA-从一张纸复制到另一张纸>仅复制一行

来自分类Dev

C#-Microsoft.Office.Interop.Excel将Excel中的所有行复制到另一张表

来自分类Dev

Excel Vba - 如何将匹配的行从一张工作表复制并粘贴到另一张工作表中完全匹配的行下方

来自分类Dev

如果它们在列标题上匹配,则将值从Excel中的一张表映射/复制到另一张

来自分类Dev

Excel VBA-复制到特定工作表的代码中的错误,具体取决于范围

来自分类Dev

Excel根据条件将数据从一张纸复制到另一张纸

来自分类Dev

将一个Excel工作表中的命名范围复制到另一工作表中的命名范围

来自分类Dev

VBA Excel将公式范围从一个工作表复制到另一个工作表

来自分类Dev

Excel VBA:如果数据与另一张工作表中的列中的值匹配,则复制行

来自分类Dev

Excel:将 VBA 操作从同一张工作表更改为另一张工作表

来自分类Dev

Excel VBA:如何将数据推送到另一张工作表上的独占范围?

来自分类Dev

将Excel单元格复制到另一张纸后丢失的Excel单元格范围的大小,高度,宽度

来自分类Dev

Excel VBA缩短代码以将值从一个范围复制到另一个范围

来自分类Dev

复制另一张Excel工作簿中的数据-复制一张纸而不是一张纸

来自分类Dev

另一张工作表上的参考单元格范围-Excel

Related 相关文章

  1. 1

    VBA Excel将行从一张工作表复制到另一张工作表中具有特定值的行

  2. 2

    Excel VBA计算过滤的单元格并复制到另一张表

  3. 3

    将大量行从一张工作表复制到另一张工作表,但Excel 2010中的空白行除外

  4. 4

    将 Excel 中匹配记录的行值从一张工作表复制到另一张工作表

  5. 5

    如何将数据从一张excel表复制到另一张excel表?

  6. 6

    Excel宏将范围从一张纸复制到另一张纸

  7. 7

    无法将列中的所有数据复制到另一张表-Excel VBA

  8. 8

    Excel,循环浏览XLSM文件并将行复制到另一张表

  9. 9

    excel根据单元格值将行复制到另一张表

  10. 10

    Excel VBA 2016根据计算将范围单元格传递到另一张工作表

  11. 11

    使用Excel中的按钮将信息从一张工作表复制到新行的另一工作表

  12. 12

    将Excel行从一张纸复制到另一张纸

  13. 13

    Excel VBA:如何将数据推到另一张工作表上的独占范围?

  14. 14

    Excel VBA-从一张纸复制到另一张纸>仅复制一行

  15. 15

    Excel VBA-从一张纸复制到另一张纸>仅复制一行

  16. 16

    C#-Microsoft.Office.Interop.Excel将Excel中的所有行复制到另一张表

  17. 17

    Excel Vba - 如何将匹配的行从一张工作表复制并粘贴到另一张工作表中完全匹配的行下方

  18. 18

    如果它们在列标题上匹配,则将值从Excel中的一张表映射/复制到另一张

  19. 19

    Excel VBA-复制到特定工作表的代码中的错误,具体取决于范围

  20. 20

    Excel根据条件将数据从一张纸复制到另一张纸

  21. 21

    将一个Excel工作表中的命名范围复制到另一工作表中的命名范围

  22. 22

    VBA Excel将公式范围从一个工作表复制到另一个工作表

  23. 23

    Excel VBA:如果数据与另一张工作表中的列中的值匹配,则复制行

  24. 24

    Excel:将 VBA 操作从同一张工作表更改为另一张工作表

  25. 25

    Excel VBA:如何将数据推送到另一张工作表上的独占范围?

  26. 26

    将Excel单元格复制到另一张纸后丢失的Excel单元格范围的大小,高度,宽度

  27. 27

    Excel VBA缩短代码以将值从一个范围复制到另一个范围

  28. 28

    复制另一张Excel工作簿中的数据-复制一张纸而不是一张纸

  29. 29

    另一张工作表上的参考单元格范围-Excel

热门标签

归档