简体   繁体   中英

Reference a worksheet in vba using inputbox

I got this code using the macro recorder but I need to run this macro pulling data from diferent worksheets, What I'm trying to acomplish is to launch the inputbox to tell the formula where to look for the data, my worksheets names are 1,2,3,4 and so on meaning each corresponds to a day of the month. In this example the VLOOKUP formula is referencing worksheet 5 ('5') can you please help me to figure out the code to replace the 5 (in this case) for any other number I set using the inputbox? I've tried something like:Dim myNum As String
myNum = Application.InputBox("Enter Worksheet Number", Type:=1) but cannot get it work this the sample code:

   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

Any help will be appreciated.

I've removed your .Select statements and resolved the formulas to their xlA1 equivalents. You should proof those carefully as I was counting the alphabet (columns) backwards on my fingers.

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

The VLOOKUP formulas are constructed from concatenated strings using the variant that the input box returned. If you get a File ► Open dialog, then the worksheet name is incorrect. You should be able to write a short loop that verified that the name supplied exists if you want to apply some error control on the worksheet designation process.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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