用户表单填写列

时间:2013-05-07 21:26:46

标签: excel vba listbox

编辑:几乎已解决,请参阅我最近的评论和相关代码。

我希望用户表单根据用户表单上的选择填写工作表的A列

用户表单有16个复选框,两个包含月份(jan-dec)的列表框和一个包含年份(两位数字)的列表框

我希望userform在字符串中填写XX YYY和ZZ,并为每个复选框选择生成两个值(每个月选择一个)并在A列中逐个粘贴这些值

(G:\报告\ XX_MISSE_YYY20ZZ.xls)

其中XX对应于我选择的复选框(总共可以在1-16个选项之间) 和YYY对应于月份的列表框选择(只是为了重申我希望从列表框中的两个月选择中生成两个值) 和ZZ对应年份的两位数列表框选择

换句话说......

我想要用户工具箱做的是,如果我在用户表单上选中与AH和AD相对应的复选框(例如),我选择月份列表框的mar和Apr,以及年份列表框中的13个我的结果列A将是

第A1列产生的第一个值是(G:\ Reporting \ AH_MISSE_MAR2013.xls)

第A2列产生的第二个值是(G:\ Reporting \ AH_MISSE_APR2013.xls)

第A3栏中的第三个值是(G:\ Reporting \ AD_MISSE_MAR2013.xls)

第A4列产生的第四个值是(G:\ Reporting \ AD_MISSE_APR2013.xls)

1 个答案:

答案 0 :(得分:1)

Private Sub cbtnSubmit_Click()
Dim sMonth1 As String
Dim sMonth2 As String
Dim sYear As String
Dim cMyControl As Control
Dim TargetCell As Range
Dim iOff As Integer

    sMonth1 = Me.lbMonth1.Value 'get the first month from the listbox
    sMotnth2 = Me.lbMonth2.Value 'get the second month from the listbox
    sYear = Me.lbYear.Value 'get the year

    TargetCell = ThisWorkbook.Worksheets(1).Range("A1") 'Where we want to start outputing
    iOff = 0 'Start output with no cell offset

    For Each cMyControl In Me.Controls 'Loop through all control on the form
        If TypeName(cMyControl) = "CheckBox" Then 'Finding the Checkboxes
            'then writing the values to the excel sheet
            TargetCell.Offset(iOff, 0).Value = "G:\Reporting\" + cMyControl.Tag + "_MISSE_" + sMonth1 + ".xls"
            TargetCell.Offset(iOff, 1).Value = "G:\Reporting\" + cMyControl.Tag + "_MISSE_" + sMonth2 + ".xls"
            'after I've written two value, "move" down two cells
            iOff = iOff + 2
        End If
    Next
End Sub