Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1867|回复: 4

[已解决]望大神给初写代码者赐教,感谢~

[复制链接]
发表于 2016-1-15 15:20 | 显示全部楼层 |阅读模式
现小弟初学VBA,自己尝试着写个小程序,但遇到了些困难,个人想让程序实现如下功能:1)首先通过扫描内容找到对应的工作表(这部分代码就夭折了 T  T,个人感觉是难点加重点!)

2)找到目标工作表后,将其他扫描内容赋值给制定单元格(内容复制到制定单元格内,会通过公式进行计算)
3)  单元格计算结果显示在程序文本框内,满足条件的,显示制定单元格内内容,如果不是,报警提示,不显示所需内容
不知道这样子说明,大家明白了没,个人写了些代码,有些冗长,繁琐,望各位多多指导
最佳答案
2016-1-15 15:36
原代码问题多多,把Range变量和其他变量搞混了。
小改了一下。
  1. Private Sub UserForm_Click()
  2.     Application.ScreenUpdating = False
  3.     Dim a, b, c
  4.     a = TextBox1.Text            '将扫描信息赋值给变量b、c
  5.     b = TextBox2.Text
  6.     c = TextBox3.Text
  7.     On Error GoTo aa          '出错则转到信息提示aa处(如果a对应的表名不存在,则下面那句 With Worksheets(a) 会出错)
  8.     With Worksheets(a)           '在工作簿中找到a对应工作表
  9.          .Range("d4").Value = b    '将b、c扫描内容输入到目标工作表制定单元格内
  10.          .Range("d5").Value = c
  11.          TextBox4.Text = .Range("d15").Value   '将结果显示到文本框内
  12.          If TextBox4.Text = "可以匹配" Then                    '显示内容如果是"可以匹配",那么将目标工作表内制定单元格内容赋值显示到对应的文本框内,如果不是,信息提示,对应文本框无内容显示
  13.              TextBox5.Text = .Range("j9").Value
  14.              TextBox6.Text = .Range("k9").Value
  15.              TextBox7.Text = .Range("k10").Value
  16.              TextBox8.Text = .Range("j11").Value
  17.              TextBox9.Text = .Range("k11").Value
  18.          End If
  19.     End With
  20.     Exit Sub
  21. aa:
  22.     MsgBox "请确认扫描信息是否有误!"
  23. End Sub
复制代码

MRM程序识别程序(2016.1.15).zip

83.77 KB, 下载次数: 4

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-1-15 15:36 | 显示全部楼层    本楼为最佳答案   
原代码问题多多,把Range变量和其他变量搞混了。
小改了一下。
  1. Private Sub UserForm_Click()
  2.     Application.ScreenUpdating = False
  3.     Dim a, b, c
  4.     a = TextBox1.Text            '将扫描信息赋值给变量b、c
  5.     b = TextBox2.Text
  6.     c = TextBox3.Text
  7.     On Error GoTo aa          '出错则转到信息提示aa处(如果a对应的表名不存在,则下面那句 With Worksheets(a) 会出错)
  8.     With Worksheets(a)           '在工作簿中找到a对应工作表
  9.          .Range("d4").Value = b    '将b、c扫描内容输入到目标工作表制定单元格内
  10.          .Range("d5").Value = c
  11.          TextBox4.Text = .Range("d15").Value   '将结果显示到文本框内
  12.          If TextBox4.Text = "可以匹配" Then                    '显示内容如果是"可以匹配",那么将目标工作表内制定单元格内容赋值显示到对应的文本框内,如果不是,信息提示,对应文本框无内容显示
  13.              TextBox5.Text = .Range("j9").Value
  14.              TextBox6.Text = .Range("k9").Value
  15.              TextBox7.Text = .Range("k10").Value
  16.              TextBox8.Text = .Range("j11").Value
  17.              TextBox9.Text = .Range("k11").Value
  18.          End If
  19.     End With
  20.     Exit Sub
  21. aa:
  22.     MsgBox "请确认扫描信息是否有误!"
  23. End Sub
复制代码

MRM程序识别程序(2016.1.15).rar

88.31 KB, 下载次数: 10

评分

参与人数 1 +15 收起 理由
这儿有肥猫 + 15 好耐心

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2016-1-15 18:25 | 显示全部楼层
grf1973 发表于 2016-1-15 15:36
原代码问题多多,把Range变量和其他变量搞混了。
小改了一下。

非常感谢老师的点播与指导,自己在运行的时候,感觉MRM判断那边反应时间需要好久,是显示内容过多还是代码的原因呢?
回复

使用道具 举报

发表于 2016-1-18 11:22 | 显示全部楼层
这个程序本身基本不费时间的,代码上没有任何花费时间的地方。不知道所谓的MRM判断是什么东东,所以无法回答。
回复

使用道具 举报

 楼主| 发表于 2016-1-18 12:50 | 显示全部楼层
grf1973 发表于 2016-1-18 11:22
这个程序本身基本不费时间的,代码上没有任何花费时间的地方。不知道所谓的MRM判断是什么东东,所以无法回答 ...

嗯,还是非常谢谢您的耐心指导~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-25 05:43 , Processed in 0.528782 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表