[英]Excel VBA : Replace() output used as range variable
我將盡力解釋這一點。 希望我在腳本中的注釋可以澄清我的雜談。 簡而言之,此腳本將在歷史生產表中快速瀏覽,將這些工作表中的選擇數據匯總為一個。 在當前代碼中,當確定要粘貼到的下一個空單元格時,我無法使Replace()輸出正常工作。 當我開始瀏覽工作簿部分時,我試圖限制所需的代碼更改量。 我希望這是有道理的。 “復制粘貼所需的代碼可以復制過去所做的有限更改。我的想法僅是更改目標列。” 我的技能有限,但我正在學習,所以請隨時就方法或設計提供建議和反饋。 目前,我很想嘗試調試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
蒂姆,安迪感謝您的寶貴時間。 你們都是正確的,它應該是offset(1,0)。 關於打開目標工作簿時的活動單元格的Tim,我已將其設置為“ a1”,但由於不需要將代碼設置為在粘貼到指定列之前將Lastcell設置為活動狀態,因此不再需要它對每個粘貼進行硬編碼。 我試圖找到一種方法,不必在每次輸入新的粘貼列時都更改末行的名稱。 我相信安迪的建議會為我簡化事情。 在搜索其他代碼以獲取示例和理解時,我還沒有看到過userange。“我已經更新了代碼以反映建議。我還添加了源表和目標表的示例。源表包含大約78個行標簽,這些行標簽將被復制到目標位置WB格式為示例格式。在理想情況下,選擇所有轉置粘貼將使我到達那里。不幸的是,有太多垃圾並手動過濾,因為87+ WB並沒有吸引力。我將不得不循環使用比較等於復制范圍。或搜索等於源中每一行的復制范圍。關於哪種更快/更高效的任何建議?無論哪種方式,都要感謝您的幫助/是您的厚顏無恥。
看起來更多..在MS開發人員的關節中找不到搜索排名的頂部。 無論哪種方式,它都能解決。
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.