Excel VBA:Replace()输出用作范围变量

Excel VBA:Replace()输出用作范围变量,excel,debugging,vba,variables,replace,Excel,Debugging,Vba,Variables,Replace,我会尽力解释这一点。希望我的脚本笔记能澄清我的胡言乱语。 简言之,完成后,此脚本将翻转历史生产表,将这些表中的选定数据编译为一个。在当前代码中,在标识下一个要粘贴到的空单元格时,我很难让Replace()输出正常工作。当我开始浏览WorkBooks部分时,我试图限制所需的代码更改量。我希望这是有道理的。“复制粘贴需要代码以有限的更改复制过去。我的想法是只需更改目标列。”我的技能有限,但我正在学习,因此请随时就方法或设计提供建议和反馈。目前,我在尝试调试columnCEL变量在范围选择中的工作方式

我会尽力解释这一点。希望我的脚本笔记能澄清我的胡言乱语。 简言之,完成后,此脚本将翻转历史生产表,将这些表中的选定数据编译为一个。在当前代码中,在标识下一个要粘贴到的空单元格时,我很难让Replace()输出正常工作。当我开始浏览WorkBooks部分时,我试图限制所需的代码更改量。我希望这是有道理的。“复制粘贴需要代码以有限的更改复制过去。我的想法是只需更改目标列。”我的技能有限,但我正在学习,因此请随时就方法或设计提供建议和反馈。目前,我在尝试调试columnCEL变量在范围选择中的工作方式时遇到了困难。我很感激有人能给我任何有建设性的东西。链接,信息来源等等,我已经在这个网站上冲浪了好几个小时,我知道了一些事情,但是

    Sub parse()
Dim strPath As String
Dim columnCEL As String
Dim lastrow As Range

'open WB to consolidate too
                        Workbooks.Open "c:\prodplan\compiled\plancon.xlsx"

Set lastrow = ActiveSheet.UsedRange.End(xlDown).Offset(1, 0)


Set objexcel = CreateObject("Excel.Application")
objexcel.Visible = True
objexcel.DisplayAlerts = False
strPath = "C:\prodplan"
Set objfso = CreateObject("Scripting.FileSystemObject")
Set objFolder = objfso.GetFolder(strPath)


'Loop through objWorkBooks
For Each objfile In objFolder.Files

    If objfso.GetExtensionName(objfile.Path) = "xlsx" Then
        Set objworkbook = objexcel.Workbooks.Open(objfile.Path)

objworkbook.Worksheets("plan").Select

 'start header dates and shifts copy from objworkbook to consolidated WB
  objworkbook.Worksheets("plan").Range("b6:p7").Select


            Selection.copy
                    Workbooks("plancon.xlsx").Worksheets("data").Range("B1").Select
                    lastrow.Select
                    ActiveCell.PasteSpecial

                    'start loop for objworkbook name copy to field in plancon corisponding with date/shift and copy/past select row data.





 objworkbook.Close False

 'Move proccesed folder to new Dir

End If
'remove msgbox after debug
 MsgBox "loop stoper remove for final application"
Next

objexcel.Quit




End Sub

"destination  WB "Plancon table structure                   
Date    shift   day Total sales Inventory   Travel
source WB NAME  Thurs   Night   3429        
source WB NAME  Fri Day 2735        
source WB NAME  Fri Night   5294        
source WB NAME  Sat Day 7672        
source WB NAME  Sat Night   0       



Source structure                    
Shift:  Thurs   Fri Fri     
Shift:  Night   Day Night       
Date:   40360   40361   40361       
Total sales 3429    2735    5294        
Inventory   1750.5045   1685.854    3374.3956       
Travel                  
蒂姆,安迪,谢谢你抽出时间。你们都是对的,它应该是偏移量(1,0)。 Tim关于打开目标工作手册时的活动单元格,我已将其设置为“a1”,但由于代码将在粘贴到指定列之前将最后一个单元格设置为活动,因此不需要设置为“a1”,每次粘贴都将对其进行硬编码。我试图找到一种方法,在每次输入新列进行粘贴时,不必更改结束行的名称。我相信安迪的建议会使事情简单化。
在搜索其他代码以获得示例和理解时,我没有看到usedrange"我已更新守则,以反映有关建议。我还添加了源表和目标表的示例。源表包含大约78行标签,这些标签将以示例格式复制到目标WB。在一个完美的世界里,全选转置粘贴会让我达到目的。不幸的是,有太多的垃圾和过滤它手动87+WB是没有吸引力的。我必须循环使用比较等于复制范围。或搜索等于源中每行的复制范围。关于什么更快/更高效,有什么建议吗?不管怎样,谢谢你的帮助/作为一个传声筒

做了更多的调查。。在一个微软开发者的网站上找到了这个,但在搜索排名中还远远没有排名靠前。不管怎样,结果都是这样

   Dim MyColumn As String
        Dim Here As String
        Here = ActiveCell.Address
                 MyColumn = Mid(Here, InStr(Here, "$") + 1, InStr(2, Here, "$") - 2)
lastrow = ActiveWorkbook.ActiveSheet.Range(MyColumn & "65536").End(xlUp).Offset(1, 0)

打开目标工作簿时,如何知道哪个单元格将处于活动状态?它总是同一列吗?如果是,那么您最好只硬编码。
Set lastrow=Cells(ActiveCell.Column,Rows.Count)。End(xlUp)。Offset(-1,0)
您真的是说-1表示偏移量,还是应该是1?FWIW
Set lastrow
指令不会对我产生错误,但您可以简化处理方法。去掉
columnCEL
,直接转到:
set lastrow=activesheet.usedrange.end(xldown).offset(1,0)
(我假设您的意思是偏移+1,而不是@TimWilliams建议的-1)