在Excel中复制超过255个字符

时间:2011-03-09 10:17:37

标签: excel excel-vba excel-2007 vba

该公司提供各种各样的Excel报告,尽管不是我的工作,也不是专家,但我还是帮他们一把:)

其中一个报告是100K +单元格的每日矩阵,由8位分析师分配,他们从中获取链接列表以及来自创建实体的其他杂项数据。他们报告中的每个分析师将所有列转换为单个列(想想数百个,逐个复制),按名称排序,检索所有http ...并将工具投入链接检查。

除了删除重复项和空单元格的宏之外,我写了一个将单元格矩阵转换为单个列。它的工作原理是选择假装的单元格,运行宏,点目的地及其完成。

这是:

Sub SingleColumnSelection()

Dim v       As Variant
Dim nCol    As Long
Dim nRow    As Long
Dim rOut    As Range
Dim iCol    As Long

v = Selection

nRow = UBound(v, 1)
nCol = UBound(v, 2)
Set rOut = Application.InputBox("Select destination", Type:=8).Resize(nRow, 1)
If rOut Is Nothing Then Exit Sub
For iCol = 1 To nCol
    rOut.Value = WorksheetFunction.Index(v, 0, iCol)
    Set rOut = rOut.Offset(nRow)
Next iCol
End Sub

我2个月前做过,今天他们告诉我有时他们有问题,我去挖掘并发现2个链接打破了宏(在20k报告中)。

两者都有大约300个字符,并且应用程序在rOut.Value = WorksheetFunction.Index(v,0,iCol)中的255之后中断,当它从> 255个字符单元格中读取时(我认为)。

任何解决方法,对于一个文盲,我有想法,我正在尝试替代方案,但会在本报告中改变分析师的工作流程

1 个答案:

答案 0 :(得分:0)

请改为尝试:

Sub SingleColumnSelection()

Dim rngOut    As Range
Dim rngSelection As Range
Dim rngCol As Range

Set rngSelection = Selection
Set rngOut = Application.InputBox("Select destination", Type:=8).Resize(rngSelection.Rows.Count, 1)
If rngOut Is Nothing Then Exit Sub

For Each rngCol In rngSelection.Columns
  rngCol.Copy Destination:=rngOut
  Set rngOut = rngOut.Offset(rngSelection.Rows.Count)
Next rngCol

End Sub