如何在VBA excel 2010脚本中根据用户选择选择数据而不丢失原始数据?

时间:2012-09-24 15:54:39

标签: excel vba excel-vba

我想与VBA文件合作,获取用户123的输入:

  1. 如何在打开xslm文件时运行它?

  2. 假设我的文件中有这个表:

  3. enter image description here

    common data对列A BC唯一内容非常有用。 我想使用下面的代码,因此取决于用户输入,它会从ABC选择A's唯一的唯一数据数据。 但是我希望A列的数据可以重复使用以供将来使用,例如如果用户提供input_num=1,则数据将为A's unique data

    Sub main()
    MsgBox ("welcome")
    
    Dim input_num As Integer
    
    input_num = InputBox(Prompt:="please select device", Title:="select device", Default:=3)
    
    If input_num = 1 Then
    
        ' use the first column
    
    ElseIf input_num = 2 Then
    
        ' use the second column
    
    Else
    
        ' use the third column
    
    End If
    
    End Sub
    

1 个答案:

答案 0 :(得分:3)

1. How can I run it while opening the xlsm file ?

2. Using the column based on User input

要在Excel文件启动时运行代码,您可以使用

Private Sub Workbook_Open()

End Sub

您将在此处放置的任何代码将在您的文件中启用提供的宏。例如,当您打开具有以下代码的文件时,您将看到一个消息框“Hello World”。

Private Sub Workbook_Open()
    MsgBox "Hello World"
End Sub

Workbook_Open()进入工作簿代码区域,如下面的屏幕截图所示

enter image description here

现在关于你的第二个问题

在Excel中,您不仅可以通过名称来引用列,还可以引用数字,例如

A列可以称为

Sheets("Sheet1").Columns("A:A")

Sheets("Sheet1").Columns(1)

这使您的工作更轻松,因为您现在可以根据用户输入直接引用该列。例如

Private Sub Workbook_Open()
    MsgBox "welcome"

    Dim input_num As Variant

    input_num = InputBox(Prompt:="please select device", _
    Title:="select device", Default:=3)

    Select Case input_num
        Case 1, 2, 3
            With Sheets("Sheet1").Columns(Val(input_num))
                '
                '~~> Do what ever you want
                '
            End With
    End Select
End Sub