我对VBA编码很陌生,并且对我所做的事情没有很好的理解。但是我走了。
我希望看看:
要完全解释我想要打开工作簿A (和工作簿B ,如果需要,无关紧要)并单击一个在练习册B ,但在特定工作表上取决于 Excel A 中单元格的值(如果单元格显示“sheet3”,则VBA在工作簿B上的“sheet3”上运行)。我还希望工作簿A 中的单元格引用工作簿B 中的单元格,但是要按动态显示工作表名称。例如,我已经粘贴了基本单元格引用,但不是Sheet1
我希望它根据单元格中的值进行更改。
='[Workbook B.xlsx]Sheet1'!$A$4
我知道这听起来非常复杂和令人困惑,但如果我能得到任何帮助,我将不胜感激。
Sub ReportStepOne()
Dim myRow As Long
myRow = 4
Rows(myRow).Value = Rows(myRow).Value
Dim rng As Range
Set rng = Range("A4:AC200")
rng.Cut rng.Offset(1, 0)
Range("A1:AC1").Copy Range("A4:AC4")
End Sub
我想:
答案 0 :(得分:0)
在另一个工作簿上触发VBA
Option Explicit
Sub RunVBA()
Dim xlApp As Excel.Application
Dim xlWorkBook As Workbook
Set xlApp = New Excel.Application
Set xlWorkBook = xlApp.Workbooks.Open("C:\Users\Om3r\Desktop\Book1.xlsm")
xlApp.Visible = True
xlWorkBook.Application.Run "Module1.SubName" ' Modulename.Subname
End Sub
参考工作表使用
Sub CopyRange()
'// From sheet1 to sheet2
Worksheets(2).Range("A1").Value = Worksheets(1).Range("A1").Value
End Sub
答案 1 :(得分:0)
下面的代码获取Reports.xlsm
中sheet2上的单元格A4的值,并将ws变量设置为Historical data.xlsm
中的工作表,然后将其用于其余代码。如果可能的话,我建议不要让你的潜艇分散在多个项目中,但这只是我的意见。我认为使用如下所示的正确引用更容易。
由于您需要Report.xlsm
上的按钮触发器,我建议将此代码移动到该工作簿。如果正确引用它,您可以从单个项目中打开,编辑,保存和关闭任何工作簿,在我看来,这比在不同项目中调用subs更容易。
Sub ReportStepOne()
Dim wbHis As Workbook, wbRep As Workbook
Dim strWsName As String
Dim ws As Worksheet
Set wbHis = Workbooks("Historical data.xlsm")
Set wbRep = Workbooks("Reports.xlsm")
strWsName = wbRep.Worksheets("Sheet2").Cells(4, 1)
Set ws = wbHis.Worksheets(strWsName)
With ws
With .Rows(4)
.Value = .Value
End With
With .Range("A4:AC200")
.Cut .Offset(1, 0)
End With
.Range("A1:AC1").Copy .Range("A4:AC4")
End With
End Sub