在excel中如何用VB实现以下内容
比如在A1中输入“中国”就会在B2中显示“111”,在A1中输入“美国”就会在B2中显示“1123”?注:本人是菜鸟,请详细说明,谢谢...
比如在A1中输入“中国”就会在B2中显示“111”,在A1中输入“美国”就会在B2中显示“1123”? 注:本人是菜鸟,请详细说明,谢谢
展开
4个回答
展开全部
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中的”宏“),出现如下图界面,选择要运行的宏,点击执行即可。
展开全部
我使用的办法有两种:
第一种办法:使用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",输入“俄罗斯”就会显示“莫斯科”
第一种办法:使用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",输入“俄罗斯”就会显示“莫斯科”
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
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
更多追问追答
追问
麻烦详细说明代码写在什么地方,如何才能实现!!谢谢
追答
写在WorkSheet后台代码里面,全部copy过去就好了,上面的代码是针对Sheet1的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
死百度、臭百度、笨百度,还不改改自己的错误!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询