Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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
Vba 尝试粘贴一系列单元格_Vba_Excel_Excel 2010 - Fatal编程技术网

Vba 尝试粘贴一系列单元格

Vba 尝试粘贴一系列单元格,vba,excel,excel-2010,Vba,Excel,Excel 2010,我用一个循环来选择一个单元格区域,但我没有得到一个区域,而是得到了两个单元格 我这里的数据屏幕截图: 我想这与我的收集计数器有关——但我不知道为什么。它应该和偏移量一起计算,对吗 但每次粘贴仅为A和B时,图像名称字符串前面的单元格,而不是介于3,1和3,2之间的范围,以及图像名称前面的单元格 谢谢你的任何想法 错误在您为副本选择的范围内。试试这个: Sub CellWidthAnalysis() Dim pastecounter As Integer Dim collength As Inte

我用一个循环来选择一个单元格区域,但我没有得到一个区域,而是得到了两个单元格

我这里的数据屏幕截图:

我想这与我的收集计数器有关——但我不知道为什么。它应该和偏移量一起计算,对吗

但每次粘贴仅为A和B时,图像名称字符串前面的单元格,而不是介于3,1和3,2之间的范围,以及图像名称前面的单元格

谢谢你的任何想法

错误在您为副本选择的范围内。试试这个:

Sub CellWidthAnalysis()

Dim pastecounter As Integer
Dim collength As Integer
Dim colnumber As Integer

'assign counters

pastecounter = 1 'for pasting in correct column
collength = 1  'for keeping track of column length
colnumber = 2       'for number of columns

ActiveSheet.Cells(3, 1).Select
'Now to select first column of data
If colnumber = 2 Then
    Do Until ActiveCell.Value = "Image Name"
        ActiveCell.Offset(1, 0).Select
        collength = collength + 1
    Loop
'the difference is here:
    Range(Cells(2, 1), Cells(collength, 2)).Copy
    Sheets("Sheet2").Cells(1, 1).Offset(2, pastecounter).Paste
    pastecounter = pastecounter + 5
    colnumber = colnumber + 1
End If
关键的变化是:

您通过将同一行传递给两个单元格引用来定义范围,从而得到一个2列宽1行高的范围。我将其更改为使用第2行作为起点。如果需要更改,您需要在其中替换一个变量。 关于代码的几个一般性说明:

我删除了.select和selection.copy。用一行代码替换两行代码 我也删除了.paste指令中的所有.select内容。简化事情 我不确定If colnumber=2 Then结构的值。指定colnumber=2,然后立即检查它是否仍然为2。当然,除非您删除了一些可能会更改该值以简化示例的循环代码。
忘了添加:屏幕截图只显示了第一页的数据,它在A列和B列中下降得更多,直到下一个数据集开始,该数据集以我在Do循环中使用的相同的三行标题开始-因此我应该将大约200个单元格粘贴到工作表2中,而不仅仅是一个范围…嘿,谢谢@FreeMan!成功了。我是VBA新手,所以简化也很方便。我确实必须更改您添加到“RangeCells2,1,Cellscollength,2.Paste”中的第二行内容,因为它遇到了一个错误,我想是因为它希望我选择与粘贴在那里相同的范围,但不确定,是的,我删除了部分代码以简化它,这就是为什么我得到了“If colnumber=2 then”部分。再次感谢!“这是一个巨大的帮助,我几乎写完了这篇文章:DGlad我可以帮忙,”莎拉说。使用宏录制器是一个很好的入门方式,也是一个很好的方式,可以在格式化时弄清楚所有的fiddley设置是什么。它只是写了非常难看的代码…:
Sub CellWidthAnalysis()

Dim pastecounter As Integer
Dim collength As Integer
Dim colnumber As Integer

'assign counters

pastecounter = 1 'for pasting in correct column
collength = 1  'for keeping track of column length
colnumber = 2       'for number of columns

ActiveSheet.Cells(3, 1).Select
'Now to select first column of data
If colnumber = 2 Then
    Do Until ActiveCell.Value = "Image Name"
        ActiveCell.Offset(1, 0).Select
        collength = collength + 1
    Loop
'the difference is here:
    Range(Cells(2, 1), Cells(collength, 2)).Copy
    Sheets("Sheet2").Cells(1, 1).Offset(2, pastecounter).Paste
    pastecounter = pastecounter + 5
    colnumber = colnumber + 1
End If