在excel中如何用VB实现以下内容

发布网友 发布时间:2022-04-19 21:23

我来回答

4个回答

热心网友 时间:2023-07-11 17:19

sub main()

if cells(1,"A").value="中国" then cells(1,"B")="111"

if cells(1,"A").value="美国" then cells(1,"B")="1123"

end sub


以此为例,在Excel中调用VBA程序的操作步骤如下(Excel2007为例):


1.选择”开发工具“选项卡,点击”Visual Basic“(或者用快捷键Alt+F11)

2.出现VBA编辑界面,注意看左侧,选择需要运行代码的工作表,此例为Sheet1;双击进入Sheet1相关程序编辑界面

3.在程序编辑区域,复制上上述代码

4.点击上面的三角号,运行程序

5.关闭VBA界面,返回工作表,就可以看到程序运行结果,如下图:

6.如果再次运行程序,可以用快捷键Alt+F8(或者步骤1中的”宏“),出现如下图界面,选择要运行的宏,点击执行即可。

热心网友 时间:2023-07-11 17:19

我使用的办法有两种:
第一种办法:使用WorkSheet的SelectionChange事件
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
此处放置事件处理程序,该事件处理程序之外,设置两个全局变量,记录上一次Range行列号及对应的文本内容,如果上次Range对应的行号是1、列号是1并且单元格内容是“中国”则用程序将B1格的内容设置为“111”,若上次Range对应的行号是1、列号是1并且单元格内容是“美国”则用程序将B1格的内容设置为“1123”。
End Sub
这种办法需要你了解WorkSheet的事件处理、Range对象的操作及其VBA语言,我以前使用过该技术实现过比较复杂的查表工作。我在一个Access数据表中有一个词典,当在第一列中某一单元格输入一个字符串时,就在SelectionChange事件中,从词典中查找该关键词,找到后,将词典条目对应的内容填入第二列对应的单元格内。不过,可以不使用VB,直接使用Excel的两个函数实现类似的功能,这就是第二种办法。
第二种办法:使用match和index函数
使用这种你需要额外使用一个sheet作为当作一个词典,假设我们将Sheet2作为词典使用,Sheet1作为输入表格使用。
假如我们已经在Sheet2中输入数据如下
A1:中国 B1:111
A2:美国 B2:1123
A3:日本 B3:japan
A4:俄罗斯 B4:莫斯科
......

为了说明清楚,我们在Sheet1中插入一个中间列(辅助列),假设为C列。
C2单元格中输入公式:=MATCH(A1,Sheet2!A:A,0)
B2单元格中输入公式:=INDEX(Sheet2!B:B,Sheet1!C2,0)
这样,你在A1中输入“中国”就会在B2中显示“111",输入“美国”就会显示“1123”,输入“日本”就会显示“japan",输入“俄罗斯”就会显示“莫斯科”

热心网友 时间:2023-07-11 17:20

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim wkst As Worksheet
Dim content As String

Set wkst = ThisWorkbook.Worksheets("Sheet1")
content = wkst.Range("A1").Value

Select Case content
Case "中国":
wkst.Range("B1").Value = "111"
Case "美国":
wkst.Range("B1").Value = "222"
End Select

Set wkst = Nothing
End Sub

热心网友 时间:2023-07-11 17:20

死百度、臭百度、笨百度,还不改改自己的错误!
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com