暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

在窗体中选择和确认的代码实现

VBA语言専攻 2022-04-28
103
【分享成果,随喜正能量】淡看世事去如烟,铭记恩情存如血。感恩是记住从别人那得到了多少,而不是自己付出了多少,感恩由心而生,用心而做。。
《VBA之Excel应用》是非常经典的,是我推出的第七套教程,定位于初级。这套教程从简单的录制宏开始讲解,一直到窗体的搭建,内容丰富,实例众多。大家可以非常容易的掌握相关的知识,这套教程共三册,十七章,都是我们在利用EXCEL工作过程中需要掌握的知识点,希望大家能掌握利用。今日讲解的内容是“VBA之EXCEL应用”的第十七章 “用户窗体(Userform)的实例应用”:在窗体中实现选择和确认

第十四节 利用多窗口实现选择和确认(二)

上一节我们完成了窗体的搭建及控件属性的设置,这节我们来学习代码部分。

代码的实现过程及讲解

1)窗体的弹出,在工作表中点击“选择和确认”按钮将弹出窗体:
Sub mynzE()
    UserForm6.Show
End Sub

2)复选框ComboBox1的改变事件,在这个事件中我们将清空ComboBox2,同时将ComboBox2根据ComboBox1的项目加载相应的项目。注意下面代码的写法。
Private Sub ComboBox1_Change()
    k = Sheets("sheet6").Range("A1").CurrentRegion.Rows.Count
    ComboBox2.Clear
    For i = 2 To k
        If Sheets("sheet6").Cells(i, 1) = ComboBox1.Text Then
            n = i
            Do While Sheets("sheet6").Cells(n, 1) = ComboBox1.Text Or Sheets("sheet6").Cells(n, 1) = ""
                If Sheets("sheet6").Cells(n, 2) <> "" Then
                    ComboBox2.AddItem Sheets("sheet6").Cells(n, 2)
                End If
                n = n + 1
                If n > k Then Exit Do
            Loop
        End If
    Next
End Sub

3)复选框ComboBox2的改变事件,在这个事件中我们将首先清空原有的图片,并判断需要加载的图片是否存在,如果存在加载这个图片,加载图片用的是Image1.Picture = LoadPicture(YY),同时根据选项给简介栏添加备注内容。在确认窗口提示所选的内容。
Private Sub ComboBox2_Change()
    Image1.Picture = Nothing
    If ComboBox2.Text <> "" Then
        YY = ThisWorkbook.Path & "\" & ComboBox2.Text & ".jpg"
        RR = Dir(YY)
        If RR <> "" Then
            Image1.Picture = LoadPicture(YY)
        End If
        Label1.Caption = "您选择的是" & ComboBox2.Text
        k = Sheets("sheet6").Range("A1").CurrentRegion.Rows.Count
        For i = 2 To k
            If Sheets("sheet6").Cells(i, 2) = ComboBox2.Text Then
                Label2.Caption = Sheets("sheet6").Cells(i, 3)
            End If
        Next
    End If
End Sub

4)命令按钮“确定”的单击事件,在这个事件中先在工作表中找到ComboBox2的值,然后改变单元格的颜色。
Private Sub CommandButton1_Click()
    k = Sheets("sheet6").Range("A1").CurrentRegion.Rows.Count
    For i = 1 To k
        If Sheets("sheet6").Cells(i, 2) = ComboBox2.Text Then
            Sheets("sheet6").Cells(i, 2).Interior.ColorIndex = 4
        End If
    Next
End Sub

5)命令按钮“重选”的单击事件,在这个事件中要将工作表还原原有的颜色。
Private Sub CommandButton2_Click()
    Sheets("sheet6").Range("A1").CurrentRegion.Interior.ColorIndex = 0
End Sub

6)窗体的加载事件,这个事件中要先清空ComboBox2,加载ComboBox1的选项。
Private Sub UserForm_Initialize()
    Sheets("sheet6").Range("A1").CurrentRegion.Interior.ColorIndex = 0
    k = Sheets("sheet6").Range("A1").CurrentRegion.Rows.Count
    ComboBox2.Clear
    With ComboBox1
        For i = 2 To k
            If Sheets("sheet6").Cells(i, 1) <> "" Then
                .AddItem Sheets("sheet6").Cells(i, 1).Value
            End If
        Next
        .Text = .List(0)
    End With
End Sub

代码的截图:

代码的实现效果

我们看一下代码的实现效果:
1)点击工作表窗口的“选择和确认”按钮

2)此时会弹出下面的窗口:
在上面的窗口中我们进行必要的选择:
我们点击“确认窗口”:
回到“选择”窗口,点击“确定”:
我们看到这个时候的工作表窗口中已经有了用户选择项目的标识了。今日内容回向:
   1) 上述代码中要获得工作表中最后一行的行号,用的是什么方法?
   2) 图片加载前,是如何判断此图片是否存在的?

本讲内容参考程序文件:工作簿17.xlsm
   
我20多年的VBA成果全在下面的资料中:

【分享成果,随喜正能量】生活当中许多事,十有八九不如意,十有八九不周全,十有八九不怎么地,生活的故事更多的是需要依靠和气来周全,包容,宽恕,忍耐,善待。
文章转载自VBA语言専攻,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论