excel - 尝试在 Range 对象中使用字符串对象时,对象 _global 的方法范围失败
问题描述
尝试使用范围对象和字符串的组合时,我收到“对象_global 的方法范围失败”消息。我正在尝试遍历多个工作表,复制并转置工作表中的每一行,将转置的行堆叠成一列,然后移动到下一张表以获取其行并将它们粘贴到下一列。
Dim CopyRng, pasteRng, Outnum, compsht As String
Dim myRng, PstRng As Range
For j = 5 To 10
For i = 1 To tot_centers
Outnum = "out" & j
CopyRng = "ThisWorkbook.Sheets(""" & Outnum & """).Cells(" & i & ", 2),
ThisWorkbook.Sheets(""" & Outnum & """).Cells(" & i & ", " & tot_days + 2 & ")"
Set myRng = Range(CopyRng)
Sheets(Outnum).Range(myRng).Copy 'THIS IS WHERE DEBUG HITS ERROR
pasteRng = "ThisWorkbook.Sheets(""" & "Compiled Data" & """).Cells(" & ((tot_days * (i - 1)) + (i + 1)) & ", " & j - 2 & ")"
Set PstRng = Range(pasteRng) 'AND I'LL PROBABLY GET THE SAME ERROR HERE
PstRng.PasteSpecial Transpose:=True
Next i
Next j
解决方案
对于看到这篇文章并想知道如何打开工作表、一次抓取多行并将它们堆叠成单独列的任何人,代码结果如下:
Dim Outnum As String
For j = 5 To 10 'use worksheets with outputs 5 through 10
For i = 1 To tot_centers 'in this case, tot_centers was declared earlier in the code and is and integer I count from a sheet
Outnum = "out" & j
Sheets(Outnum).Range(Sheets(Outnum).Cells(i, 2), Sheets(Outnum).Cells(i, tot_days + 2)).Copy
Sheets("Compiled Data").Range(Sheets("Compiled Data").Cells((tot_days * (i - 1)) + (i + 1), j - 1), Sheets("Compiled Data").Cells((tot_days * (i - 1)) + (i + 1), j - 1)).PasteSpecial Transpose:=True
Next i
Next j
End Sub
推荐阅读
- python - django中的代码可视化
- html - 用于提交带有弹出窗口的表单的 HTML 按钮
- c++ - 为什么 C++ 模板计算如此之快?
- asp.net-mvc - 使用 ASP.NET Core 2.0 MVC 在一个解决方案的不同项目中共享相同的 _layout.cshtml
- c++ - 如何在qt中禁用QComboBox的快捷方式?
- elasticsearch - 在elasticsearch中实现同义词相同的搜索结果
- javascript - Angular - 显示不同的页面(简单)
- android - 如何使用 ADB 命令连接到任何指定的 Wi-Fi 网络(SSID)
- asp.net-mvc - Asp Net MVC4 BundleConfig
- jquery - 列表中的 Href 链接在移动设备上不可点击