Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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 - Fatal编程技术网

复制一行,插入多个新行,并在多张图纸上粘贴信息Excel VBA

复制一行,插入多个新行,并在多张图纸上粘贴信息Excel VBA,excel,vba,Excel,Vba,这是每个地区代码下所有项目的位置 我在同一工作簿中有一个“新项目”工作表、“数据”工作表和一个“查看”工作表。 在我的“新项目”工作表中,我有一个用于输入新项目的B2:H2部分,并单击按钮运行宏。我需要帮助修复错误。它会运行,但会将“true”添加到每个点,而不是复制的部分 我需要宏来添加一行,复制区域代码(在a列中;有30多个区域,但默认情况下每个项目都添加到一个区域),在“数据”表的新行的B:H列中插入B2:H2,并且只将其添加到“视图”表的末尾。 它现在一直输入true。为什么会这样?另外

这是每个地区代码下所有项目的位置

我在同一工作簿中有一个“新项目”工作表、“数据”工作表和一个“查看”工作表。 在我的“新项目”工作表中,我有一个用于输入新项目的B2:H2部分,并单击按钮运行宏。我需要帮助修复错误。它会运行,但会将“true”添加到每个点,而不是复制的部分

我需要宏来添加一行,复制区域代码(在a列中;有30多个区域,但默认情况下每个项目都添加到一个区域),在“数据”表的新行的B:H列中插入B2:H2,并且只将其添加到“视图”表的末尾。 它现在一直输入true。为什么会这样?另外,为什么代码不复制B2:H2?我对VBA相当陌生

如果可能的话,如果有一种方法可以在视图工作表上调整图表的选定数据,在查看的数据中添加一条线,那就太好了。例如:图表显示50行,并通过宏向所选数据添加另一行

提前感谢您的所有建议。如果需要,我可以澄清任何事情或上传excel。 以下是迄今为止的代码:

Sub AddItem()
   Sheets("Data").Select
        Dim lastRow As Long
        Dim rowPtr As Long
        lastRow = Range("A" & Rows.Count).End(xlUp).Row
    For rowPtr = lastRow To 2 Step -1
        If Not IsEmpty(Range("A" & rowPtr)) Then
          If Range("A" & rowPtr) <> Range("A" & rowPtr - 1) Then
            Range("A" & rowPtr).EntireRow.Insert
          End If
        End If
  Next
   Sheets("New Item").Select
   Application.ScreenUpdating = False
   Dim copySheet As Worksheet
   Dim pasteSheet1 As Worksheet

   Set copySheet = Worksheets("New Item")
   Set pasteSheet1 = Worksheets("Data")

   copySheet.Range("B2:H2").Copy
   pasteSheet1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 1).PasteSpecial xlPasteValues
   Application.CutCopyMode = False
   Application.ScreenUpdating = True
End Sub
Sub AddItem()
工作表(“数据”)。选择
最后一排一样长
昏暗的划船和长的划船一样
lastRow=范围(“A”和Rows.Count).End(xlUp).Row
对于rowPtr=lastRow至2步骤-1
如果不是IsEmpty(范围(“A”&rowPtr)),则
如果范围(“A”和rowPtr)范围(“A”和rowPtr-1),则
范围(“A”&rowPtr).EntireRow.Insert
如果结束
如果结束
下一个
工作表(“新项目”)。选择
Application.ScreenUpdating=False
将复印件变暗为工作表
将纸张1调整为工作表
设置复印页=工作表(“新项目”)
Set-pasteSheet1=工作表(“数据”)
复印纸。范围(“B2:H2”)。复印件
粘贴表单1.单元格(Rows.Count,1).结束(xlUp).偏移量(1,1).粘贴特殊xlpasteValue
Application.CutCopyMode=False
Application.ScreenUpdating=True
端接头

所以我不确定这是否是你想要的

Sub Add()
Dim Data As Worksheet, NItem As Worksheet, View As Worksheet
Dim lRow As Long

Application.ScreenUpdating = False

Set NItem = Worksheets("New Item")
Set Data = Worksheets("Data")
Set View = Worksheets("View")

lRow = View.Cells(View.Rows.Count, 2).End(xlUp).Row

Data.Range("A2").EntireRow.Insert
NItem.Range("B2:H2").Copy
Data.Range("B2").PasteSpecial xlPasteValues
View.Cells(lRow + 1, 2).PasteSpecial xlPasteValues

Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

但这将在数据表的第2行中添加一行,粘贴值。(您的
For
循环在每个条目后插入新行,为什么?)。它还将其粘贴到视图工作表中。除此之外,请避免像代码的第二部分那样使用
。选择
并将
范围、.Cells等对象化

所以我不确定这是否是你想要的

Sub Add()
Dim Data As Worksheet, NItem As Worksheet, View As Worksheet
Dim lRow As Long

Application.ScreenUpdating = False

Set NItem = Worksheets("New Item")
Set Data = Worksheets("Data")
Set View = Worksheets("View")

lRow = View.Cells(View.Rows.Count, 2).End(xlUp).Row

Data.Range("A2").EntireRow.Insert
NItem.Range("B2:H2").Copy
Data.Range("B2").PasteSpecial xlPasteValues
View.Cells(lRow + 1, 2).PasteSpecial xlPasteValues

Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

但这将在数据表的第2行中添加一行,粘贴值。(您的
For
循环在每个条目后插入新行,为什么?)。它还将其粘贴到视图工作表中。除此之外,请避免像代码的第二部分那样使用
。选择
并将
范围、.Cells等对象化

您可以在这一行中修复变量,因为您只有pasteSheet,但您将其声明为pasteSheet1。pasteSheet.Cells(Rows.Count,1).End(xlUp).Offset(1,1).PasteXlPasteValues我很抱歉,我编辑了这段代码,使其没有变量、工作表等的实际名称。这不是问题所在,但我很感激你能保持警惕。你可以先在这行修改你的变量,你只有pasteSheet,但你声明它为pasteSheet1。pasteSheet.Cells(Rows.Count,1).End(xlUp).Offset(1,1).PasteXlPasteValues我很抱歉,我编辑了这段代码,使其没有变量、工作表等的实际名称。这不是问题所在,但我感谢你的警惕。谢谢你的快速反应。for循环在每个条目后插入新行的原因是:每个区域都会自动添加“项目”。当我们添加新项目时,默认情况下有30多个区域都会获得新项目。所以我需要粘贴项目,然后复制A列中的区域代码,但这意味着数据重复了30次,为什么要复制区域?地区代码在哪一页?你的问题中没有提到这一点。如果你用不同的表格为问题添加一个屏幕截图,可能会有所帮助。“查看”表格基本上是项目的全局摘要,“数据”表格提供各个地区的数据。我创建了一个示例屏幕截图,以便问题更容易理解。理想情况下,宏运行时,插入每个新项目后,项目将复制到“数据”选项卡中的每个区域,并且在“视图”选项卡中进行一次复制。因此,在ss中,并非所有区域都有一些数据,怎么会发生这种情况,我的意思是,您说将插入多次,然后一个区域的数据如何不同?如果你在col A中加入多个区域而不是多个重复入口,这不是更有意义吗?你可以把它粘贴到最后,对区域应用一个自动过滤器,这样你就不用担心移位或其他问题了。在你的旧循环中,每次运行后都会创建指数级的入口,而不是每次30个。还有,区域是如何选择的?您只能从B:H处复制。谢谢您的快速回复。for循环在每个条目后插入新行的原因是:每个区域都会自动添加“项目”。当我们添加新项目时,默认情况下有30多个区域都会获得新项目。所以我需要粘贴项目,然后复制A列中的区域代码,但这意味着数据重复了30次,为什么要复制区域?地区代码在哪一页?你的问题中没有提到这一点。如果你用不同的表格为问题添加一个屏幕截图,可能会有所帮助。“查看”表格基本上是项目的全局摘要,“数据”表格提供各个地区的数据。我创建了一个示例屏幕截图,以便问题更容易理解。理想情况下,宏运行时,插入每个新项目后,项目将复制到“数据”选项卡中的每个区域,并在“视图”选项卡中复制一个副本。因此,在ss中,并非所有区域都有一些数据,如何