繁体   English   中英

使用inputbox在vba中引用工作表

[英]Reference a worksheet in vba using inputbox

我使用宏录制器获取此代码,但我需要运行此宏从不同的工作表中提取数据,我正在尝试实现的是启动输入框以告知公式在哪里查找数据,我的工作表名称为1, 2,3,4等等意义每个对应于一个月中的某一天。 在这个例子中,VLOOKUP公式是引用工作表5('5')你可以帮我找出替换5(在这种情况下)使用输入框设置的任何其他数字的代码吗? 我尝试过类似的东西:Dim myNum As String
myNum = Application.InputBox(“输入工作表编号”,类型:= 1)但是无法使用此示例代码:

   Sub GetMPRE_Data()
'
' GetMPRE_Data Macro
' Gets MPRE data to add to MLEA total
'
' Keyboard Shortcut: Ctrl+Shift+G
'
ActiveCell.FormulaR1C1 = "Staffed MPRE"
Range("K10").Select
ActiveCell.FormulaR1C1 = "Non-Prod MPRE"
Range("L10").Select
ActiveCell.FormulaR1C1 = "Staffed Time"
Range("M10").Select
ActiveCell.FormulaR1C1 = "Staffed Time Decimal"
Range("N10").Select
ActiveCell.FormulaR1C1 = "Non-Productive"
Range("O10").Select
ActiveCell.FormulaR1C1 = "Non-Productive Decimal"
Range("J11").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-9],'5'!R[-9]C[-9]:R[89]C[-5],2,FALSE)"
Range("K11").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-10],'5'!R[-9]C[-10]:R[90]C[-6],4,FALSE)"
Range("L11").Select
ActiveCell.FormulaR1C1 = "=RC[-7]+RC[-2]"
Range("L11").Select
Selection.NumberFormat = "[h]:mm:ss"
Range("M11").Select
ActiveCell.FormulaR1C1 = "=RC[-1]*24"
Range("M11").Select
Selection.NumberFormat = "0.0"
Range("N11").Select
ActiveCell.FormulaR1C1 = "=RC[-8]+RC[-3]"
Range("N11").Select
Selection.NumberFormat = "[h]:mm:ss"
Range("O11").Select
ActiveCell.FormulaR1C1 = "=RC[-1]*24"
Range("O11").Select
Selection.NumberFormat = "0.0"
Range("J11:O11").Select
Selection.AutoFill Destination:=Range("J11:O30"), Type:=xlFillDefault
Range("J11:O30").Select
Range("R28").Select
ActiveWindow.SmallScroll Down:=-12
Range("J11:J30").Select
With Selection.Interior
    .Pattern = xlNone
    .TintAndShade = 0
    .PatternTintAndShade = 0
End With
Range("J11").Select
End Sub

任何帮助将不胜感激。

我删除了.Select语句并将公式解析为xlA1等价物。 你应该仔细证明这些,因为我在手指上向后计数字母(列)。

Sub GetMPRE_Data()
    ' GetMPRE_Data Macro
    ' Gets MPRE data to add to MLEA total
    ' Keyboard Shortcut: Ctrl+Shift+G
    Dim vWS As Variant
    vWS = InputBox("Select a worksheet", "Workshgeet Slector", Default:=ActiveSheet.Name)
    Debug.Print vWS
    If Len(vWS) Then
        With ActiveSheet
            .Range("J10").Resize(1, 6) = _
              Array("Staffed MPRE", "Non-Prod MPRE", "Staffed Time", "Staffed Time Decimal", "Non-Productive", "Non-Productive Decimal")
            .Range("J11").Formula = "=VLOOKUP(A11,'" & vWS & "'!$A$2:E100, 2, FALSE)"
            .Range("K11").Formula = "=VLOOKUP(A11,'" & vWS & "'!$A$2:E101, 4, FALSE)"
            .Range("L11").Formula = "=SUM(E11, J11)"
            .Range("L11").NumberFormat = "[h]:mm:ss"
            .Range("M11").Formula = "=L11*24"
            .Range("M11").NumberFormat = "0.0"
            .Range("N11").Formula = "=SUM(F11, K11)"
            .Range("N11").NumberFormat = "[h]:mm:ss"
            .Range("O11").Formula = "=M11*24"
            .Range("O11").NumberFormat = "0.0"
            With .Range("J11:O30")
                .FillDown
                With .Interior
                    .Pattern = xlNone
                    .TintAndShade = 0
                    .PatternTintAndShade = 0
                End With
            End With
        End With
    End If
End Sub

VLOOKUP公式是使用输入框返回的变量从连接字符串构造的。 如果您收到文件►打开对话框,则工作表名称不正确。 如果要在工作表指定过程中应用某些错误控制,您应该能够编写一个验证提供名称的短循环。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM