【发布时间】:2015-05-11 14:07:03
【问题描述】:
我正在使用 VBA 代码将一些信息从表 2 复制粘贴 (Application.Transpose) 到表 1。代码运行良好,但是,我有几个超过 255 个字符的单元格。
我遇到了这些单元格的错误(错误 13:类型不匹配)。我认为这是因为单元格包含超过 255 个字符。
下面是我正在使用的代码:
Sub Bouton3_Cliquer()
Dim O1 As Worksheet 'déclare la variable O1 (Onglet 1)
Dim O2 As Worksheet 'déclare la variable O2 (Onglet 2)
Dim TC As Variant 'déclare la variable TC (Tableau de Cellules)
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim I As Integer 'déclare la variable I (Incrément)
Dim TMP As Variant 'déclare la variable TMP (tableau TeMPoraire)
Dim TL() As Variant 'déclare la variable TL (Tableau de Lignes)
Dim K As Integer 'déclare la variable K (incrément)
Dim PL As Integer 'déclare la variable PL (Première Ligne)
Dim J As Integer 'déclare la variable J (incrément)
Dim L As Byte 'déclare la variable L (incrément)
Set O1 = Sheets("Feuil1")
Set O2 = Sheets("evaluations")
TC = O1.Range("B1").CurrentRegion
Set D = CreateObject("Scripting.Dictionary")
For I = 4 To UBound(TC, 1)
D(TC(I, 1)) = ""
Next I
TMP = D.keys
TC = O2.Range("A1").CurrentRegion
For I = 0 To UBound(TMP, 1)
Erase TL 'efface le tableau TL
K = 1 'initialise la variable K
PL = O1.Columns(2).Find(TMP(I), O1.Range("B3"), xlValues, xlWhole).Row
For J = 2 To UBound(TC, 1)
If TC(J, 1) = TMP(I) Then
ReDim Preserve TL(1 To UBound(TC, 2) - 1, 1 To K)
For L = 1 To UBound(TC, 2) - 1
TL(L, K) = TC(J, L + 1)
Next L
K = K + 1 '
End If 'fin de la condition
Next J
If K > 1 Then O1.Cells(PL, 16).Resize(UBound(TL, 2), UBound(TL, 1)).Value = Application.Transpose(TL)
Next I '
End Sub
还有问题所在:
If K > 1 Then
O1.Cells(PL, 16).Resize(UBound(TL, 2), _
UBound(TL, 1)).Value = Application.Transpose(TL)
你知道我该如何解决这个问题吗?
【问题讨论】:
-
除非您使用的是非常旧版本的 Excel,否则不应有 255 个字符的限制(它更像是我上次检查的 911)。我建议您添加另一个循环,将数组逐项转置为新数组。
-
我同意@Rory。不久前,我编写了一个简短的辅助函数来重新调整和转置数组here。
-
我很久以前就遇到过这个问题。如果没有记错的话,VBA 永远不会更新以反映单元格不再限制为 255 个字符的变化,因此 VBA 仍然认为这是限制。我将不得不看看我是否能找到我当时正在编写的代码,看看我是如何处理它的
-
我同意@psubsee2003 - 在某些情况下,VBA 会将您限制为 255 个字符。我有一个表格,一个单元格中最多可以容纳 300 个字符(输入表单限制),但 VBA 会尝试根据前 8 或 16 行数据来猜测如何处理该列。如果它 255 它认为它是一个备忘录。我不得不用绒毛填充物将前 16 行数据伪装成 300 个字符的垃圾才能使其正常工作。
-
我正在使用 Excel 2010... 谢谢 Jeeped,我会阅读您的简短助手。 @Freeman:我试图用数据填充前 16 行(每个单元格超过 300 个字符)......但这没有用。