EXCEL VBA中程序代码问题,请大侠帮忙。

完整代码如下:PrivateSubQuerry_Click()Worksheets("在职人员").SelectDimiAsIntegeri=0DimnumAsLongD... 完整代码如下:Private Sub Querry_Click()Worksheets("在职人员").SelectDim i As Integeri = 0Dim num As LongDim str As Stringnum = Worksheets("在职人员").Range("B65536").End(xlUp).RowActiveWorkbook.Names("DataArea").RefersToR1C1 = " =在职人员!R3C2:R" & num & "C2"str = InputBox("请输入需要查询的姓名")Range("cj3").FormulaR1C1 = "=countif(DataArea,""" & str & """)"If Range("cj3").Value > 1 ThenDim MyArray(6, 10) As String MyArray(0, 0) = "员工编号" MyArray(1, 0) = "姓名" MyArray(2, 0) = "性别" MyArray(3, 0) = "职务" MyArray(4, 0) = "部门" MyArray(5, 0) = "联系电话" UserForm1.Height = 387 w_UserList.Visible = True With Worksheets(1).Range("DataArea") Set c = .Find(str, LookIn:=xlValues) If Not c Is Nothing Then firstAddress = c.Address Do i = i + 1 MyArray(0, i) = Cells(c.Row, 1) MyArray(1, i) = Cells(c.Row, 2) MyArray(2, i) = Cells(c.Row, 3) MyArray(3, i) = Cells(c.Row, 26) MyArray(4, i) = Cells(c.Row, 25) MyArray(5, i) = Cells(c.Row, 15) Set c = .FindNext(c) Loop While Not c Is Nothing And c.Address <> firstAddress End If End With w_UserList.Column() = MyArray Exit Sub End If With Worksheets(1).Range("DataArea") Set c = .Find(str, LookIn:=xlValues) If Not c Is Nothing Then firstAddress = c.Address Do w_b_Address.Text = Cells(c.Row13) w_b_BirthDay.Text = Cells(c.Row5) w_b_Stu.Text = Cells(c.Row6) w_b_Tech.Text = Cells(c.Row7) w_b_School.Text = Cells(c.Row9) w_b_Mobile.Text = Cells(c.Row) w_b_ID.Text = Cells(c.Row) w_b_WorkerName.Text = Cells(c.Row) w_b_FName.Text = Cells(c.Row) w_b_FWork.Text = Cells(c.Row) w_b_HouseID.Text = Cells(c.Row) w_b_NowAddress.Text = Cells(B.Row) w_b_HomeTelephone.Text = Cells(B.Row) w_b_CarID.Text = Cells(c.Row) w_b_Email.Text = Cells(c.Row) w_b_Image.Picture = LoadPicture(ThisWorkbook.Path & "\PersonImage\" & Cells(c.Row, 6)) Set c = .FindNext(c) Loop While Not c Is Nothing And B.Address <> firstAddress End If End With End Sub

我有几个疑问,里面的cj3是什么?c.Row代表什么,能换成b.Row吗?能把Set c等中的c换成b吗?还有 With Worksheets(1).Range("DataArea")也报过错误,也不知道错在哪里?MyArray(0, 0) = "员工编号" MyArray(1, 0) = "姓名"这个当中的行列和C语言中的相反?分别是第一行第一列和第二列第一行?

怎样实现这个人事系统中的性别和婚姻状况,学历等复选框内容的显示代码?文本框的用 w_b_ID.Text = Cells(c.Row),那这种复选框用什么?这个查询功能代码有太多问题了,请大侠帮助啊。
展开
 我来答
百度网友ca64c0c
2013-03-28 · TA获得超过4666个赞
知道大有可为答主
回答量:2991
采纳率:61%
帮助的人:1464万
展开全部
从代码本身来看,黄色代码没有错误,唯一可疑的地方是定义的字串变量 str 与系统保留函数重名,但应该也不影响运行。

cj3是什么?:CJ3代表CJ3单元格,这里可能是临时借用CJ3单元格,查找列表中是否包含 str。

c.Row代表什么,能换成b.Row吗?能把Set c等中的c换成b吗?:c是指定的一个Range对象,代表了一个指定的单元格区域,c继承了range对象的所有属性、方法,c.row代表单元格对象的行号。因此,只要在前面用dim声明了b变量为range类,并用set将b指定为range对象,就可以将c换成b

行列和C语言中的相反?:VBA中,单元格坐标引用是(row, column)格式的,行在前,列在后
我的王是金闪闪4o
2013-03-28 · TA获得超过6700个赞
知道大有可为答主
回答量:7194
采纳率:42%
帮助的人:3306万
展开全部
CJ3是指CJ列,第3行。
c.row
是指变量C代表的单元格的行号
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liuzenghui2007
2013-03-28 · TA获得超过187个赞
知道小有建树答主
回答量:169
采纳率:0%
帮助的人:136万
展开全部
range唯一不接受的写法,就是你那样
可以写成range("cj3:cj3"),我也不明白盖茨为啥这样设计
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
稚心远
2013-03-28 · 超过65用户采纳过TA的回答
知道答主
回答量:176
采纳率:0%
帮助的人:162万
展开全部
CJ3是:CJ列第三行
c是创建的find方法的对象,返回的是查找到的值,如果没查到的话返回empty,c.Row返回的是查找到这个值所在的行数。
range里面放的是坐标或者范围

》》怎样实现这个人事系统中的性别和婚姻状况,学历等复选框内容的显示代码?
这个问题使用的是用find查到值,然后把这个值复制给这个控件

>>With Worksheets(1).Range("DataArea")
这个是定义选定的范围,有一个方位被定义为"DataArea",然后在这个范围内用find方法查找目标值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式