我正在尝试将另一个工作簿中的单元格中的值分配给代码中的字符串变量。
所以目前我的代码会查找工作簿中的P,G,H,I列,但是我创建了另一个工作簿,我已经输入了我需要它查找的所有列。所以在其他工作簿上我已将其映射出来,因此Ship to site ID值为P但我无法锻炼如何将此工作簿中的值分配给下面的代码。
我想要它所以我可以只更改映射工作簿中的值,而不必每次都有更改时返回我的编码并更改列函。
ShipToSiteID = Application.WorksheetFunction.Trim(Range("P" & counter))
AltShipTo1 = Application.WorksheetFunction.Trim(Range("G" & counter))
AltShipTo2 = Application.WorksheetFunction.Trim(Range("H" & counter))
AltShipToCity = Application.WorksheetFunction.Trim(Range("I" & counter))
答案 0 :(得分:1)
当您使用Range("P" & counter)
时,这将引用ActiveWorksheet
所以它与ActiveWorksheet.Range("P" & counter)
如果要引用其他工作簿,则需要使用此工作簿中的工作表范围。
Sub test()
Dim newWorkbook As Workbook
Dim newWorksheet As Worksheet
'NewWorkbook.xlsm is already open
Set newWorkbook = Workbooks("NewWorkbook.xlsm")
Set newWorksheet = newWorkBook.Worksheets("Sheet1")
MsgBox "This value is A1 in NewWorkbook - " & newWorksheet.Range("A1").Value
End Sub
您还可以按索引获取一个打开的工作簿(虽然这不是真的推荐)。
Set newWorkbook = Workbooks(1)
您可以使用Workbook.Open
Set newWorkbook = Workbooks.Open("C:/Path/To/Workbook")
或者使用Workbook.Add
Set newWorkbook = Workbooks.Add()
另外,关于您对Application.WorksheetFunction.Trim
内置的VBA Trim()
功能更适合..
答案 1 :(得分:0)
我不完全确定您是如何尝试从一个工作簿复制到另一个工作簿的,但下面的代码是从另一个工作簿中获取特定单元格数据的一般方法。
Sub GetOtherValues()
Dim thisWS As Worksheet
Dim thatWS As Worksheet
Dim thatWB As Workbook
Dim ShipToSiteID As String
Dim counter As Integer
Set thisWS = ActiveSheet
Set thatWB = Workbooks.Open("C:\demo.xlsx")
Set thatWS = thatWB.Worksheets(1)
counter = 2 'initialized here for the sake of code completeness
ShipToSiteID = Trim(thatWS.Range("P" & counter))
'Do something else with the trimmed data from ShipToSiteID
thisWS.Cells(2, 2) = ShipToSiteID
thatWB.Close
End Sub
此代码假定您从当前工作簿运行,并且需要另一个工作表/工作簿来获取数据。声明变量后,它会将thisWB
指定为当前工作表,然后打开下一个工作簿并将第一个工作表分配给thatWS
。我们现在可以使用thatWS
和counter
变量来复制和修剪数据,并将其粘贴到变量ShipToSiteID
中(然后执行其他任何需要处理的操作) 。