小春网

 找回密码
 注册账号
楼主: 陈酿
收起左侧

[IT 交流] 重开贴写一个VBA 用form写过滤器

[复制链接]
 楼主| 发表于 2011-12-17 00:20:11 | 显示全部楼层
sundf 发表于 2011-12-15 23:34
另外这个是form的样子,textbox1是想生成的sheet名(图的上面),textbox2是条件值,至于下拉筐么上面代码只 ...

Baidu IME_2011-12-17_0-20-0.jpg
界面是这样的

回复

使用道具 举报

发表于 2011-12-17 00:31:32 | 显示全部楼层
陈酿 发表于 2011-12-16 23:03
dim s as Integer 文本框
现在form上设计了一个 Generate 按钮,按了之后,触发以下顺序的事件,读取文本 ...

我不知道你想要的动态名字是啥,所以给你的例子是form输入。至于其他,应该满足要求了,if的写法看代码啦。
回复

使用道具 举报

 楼主| 发表于 2011-12-17 14:01:55 | 显示全部楼层
sundf 发表于 2011-12-17 00:31
我不知道你想要的动态名字是啥,所以给你的例子是form输入。至于其他,应该满足要求了,if的写法看代码啦 ...

十分感谢,我现在用 Practice data做
回复

使用道具 举报

 楼主| 发表于 2011-12-17 14:13:41 | 显示全部楼层
sundf 发表于 2011-12-17 00:31
我不知道你想要的动态名字是啥,所以给你的例子是form输入。至于其他,应该满足要求了,if的写法看代码啦 ...
  1. Private Sub CommandButton1_Click()
  2. Dim m As Integer
  3. Dim n As Integer
  4. Dim f As Integer
  5. Dim i, j As Integer
  6. Sheets("Practice data").Select
  7. Sheets("Practice data").Copy After:=Sheets("Practice data")
  8. ActiveSheet.Name = TextBox1.Text
  9. ActiveCell.CurrentRegion.Select
  10.     n = Selection.Columns.count
  11.     m = Selection.Row.count
  12. f = n - Descolumncount
  13. For i = 2 To m
  14.         For j = 2 To f
  15.       
  16. If CDbl(Sheets("remark").Cells(i, j)) >= CDbl(TextBox2.Text) Then
  17.                         Sheets(TextBox1.Text).Cells(i, j) = Sheets("Practice data").Cells(i, j)
  18. Else
  19. Sheets(TextBox1.Text).Cells(i, j) = 0
  20. End If

  21.   Next i
  22. Next j
  23. End Sub

复制代码
改完的,next i 那里出错了。。。。
回复

使用道具 举报

发表于 2011-12-17 18:06:58 | 显示全部楼层
陈酿 发表于 2011-12-17 14:13
改完的,next i 那里出错了。。。。

next i和next j写反了
循环是嵌套的,不大喜欢跟着写i , j
回复

使用道具 举报

 楼主| 发表于 2011-12-18 18:05:52 | 显示全部楼层
sundf 发表于 2011-12-17 18:06
next i和next j写反了
循环是嵌套的,不大喜欢跟着写i , j

名字为text2的表都在original的后边,而不是真个worksheet的最后,其他我都搞定了
回复

使用道具 举报

 楼主| 发表于 2011-12-18 22:03:17 | 显示全部楼层
sundf 发表于 2011-12-17 00:31
我不知道你想要的动态名字是啥,所以给你的例子是form输入。至于其他,应该满足要求了,if的写法看代码啦 ...

发现个问题。。。。新的
  1. Sheets(TextBox1.Text).Cells(i, j) = 0

  2. 是不是把当前表所有的列中不满足的条件的替换掉。。。。。。
复制代码
回复

使用道具 举报

发表于 2011-12-18 22:08:12 | 显示全部楼层
陈酿 发表于 2011-12-18 22:03
发现个问题。。。。新的

是的,替换成0
回复

使用道具 举报

发表于 2011-12-18 22:11:42 | 显示全部楼层
陈酿 发表于 2011-12-18 18:05
名字为text2的表都在original的后边,而不是真个worksheet的最后,其他我都搞定了 ...

Sheets("Practice data").Copy After:=Sheets("Practice data")
换成
Sheets("Practice data").Copy After:=Sheets(Sheets.Count)

评分

参与人数 1 +99 收起 理由
憨吃迷糊睡 + 99 赞一个

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2011-12-18 23:48:42 | 显示全部楼层
sundf 发表于 2011-12-18 22:08
是的,替换成0

问题不是所有列。。。。和remark一样的列数,我试着加了个循环 j=2 to f 结果不行。。。。
回复

使用道具 举报

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

本版积分规则

小春网
常务客服微信
微信订阅号
手机客户端
扫一扫,查看更方便! 快速回复 返回顶部 返回列表