Excel精英培训网

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

[已解决]为什么这段代码只显示表中最后一行的数据

[复制链接]
发表于 2011-12-7 20:53 | 显示全部楼层 |阅读模式
Private Sub ComboBox1_Change()
For i = 2 To Sheets("菜品总表").Range("A65536").End(xlUp).Row
If ComboBox1.Text = Sheets("菜品总表").Cells(i, 1) Then
TextBox1.Text = Sheets("菜品总表").Cells(i, 2)
TextBox2.Text = Sheets("菜品总表").Cells(i, 3)
TextBox3.Text = Sheets("菜品总表").Cells(i, 4)
TextBox4.Text = Sheets("菜品总表").Cells(i, 5)
TextBox5.Text = Sheets("菜品总表").Cells(i, 6)
TextBox6.Text = Sheets("菜品总表").Cells(i, 7)
TextBox8.Text = Sheets("菜品总表").Cells(i, 8)
TextBox9.Text = Sheets("菜品总表").Cells(i, 9)
TextBox10.Text = Sheets("菜品总表").Cells(i, 10)
TextBox11.Text = Sheets("菜品总表").Cells(i, 11)
TextBox7.Text = Sheets("菜品总表").Cells(i, 12)
TextBox13.Text = Sheets("菜品总表").Cells(i, 13)
TextBox14.Text = Sheets("菜品总表").Cells(i, 14)
TextBox15.Text = Sheets("菜品总表").Cells(i, 15)
TextBox16.Text = Sheets("菜品总表").Cells(i, 16)
TextBox17.Text = Sheets("菜品总表").Cells(i, 17)
TextBox18.Text = Sheets("菜品总表").Cells(i, 18)
TextBox19.Text = Sheets("菜品总表").Cells(i, 19)
TextBox20.Text = Sheets("菜品总表").Cells(i, 20)
TextBox21.Text = Sheets("菜品总表").Cells(i, 21)
TextBox12.Text = Sheets("菜品总表").Cells(i, 22)
TextBox23.Text = Sheets("菜品总表").Cells(i, 23)
TextBox24.Text = Sheets("菜品总表").Cells(i, 24)
TextBox25.Text = Sheets("菜品总表").Cells(i, 25)
TextBox26.Text = Sheets("菜品总表").Cells(i, 26)
TextBox27.Text = Sheets("菜品总表").Cells(i, 27)
TextBox29.Text = Sheets("菜品总表").Cells(i, 28)
TextBox30.Text = Sheets("菜品总表").Cells(i, 29)
TextBox31.Text = Sheets("菜品总表").Cells(i, 30)
TextBox32.Text = Sheets("菜品总表").Cells(i, 31)
TextBox28.Text = Sheets("菜品总表").Cells(i, 32)
TextBox33.Text = Sheets("菜品总表").Cells(i, 33)
TextBox34.Text = Sheets("菜品总表").Cells(i, 34)
TextBox35.Text = Sheets("菜品总表").Cells(i, 35)
TextBox36.Text = Sheets("菜品总表").Cells(i, 36)
TextBox22.Text = Sheets("菜品总表").Cells(i, 37)
Else
For j = 1 To 36
Me.Controls("textbox" & j) = ""
Next
End If
Next
End Sub

这样查询的话怎么只显示表中最后一行的数据,其它的确查不出来呢
最佳答案
2011-12-8 14:22
我看了你的附件,其实11楼的答案是错误的!应该是:
  1. Private Sub ComboBox1_Change()
  2.     For j = 1 To 36
  3.         Me.Controls("textbox" & j) = ""
  4.     Next
  5.     With Sheets("菜品总表")
  6.         For i = 2 To .Range("A65536").End(xlUp).Row
  7.             If ComboBox1.Text = .Cells(i, 1) Then
  8.                 For j = 1 To 6
  9.                     Me.Controls("textbox" & j) = .Cells(i, j + 1)
  10.                 Next
  11.                 For j = 8 To 11
  12.                     Me.Controls("textbox" & j) = .Cells(i, j)
  13.                 Next
  14.                 For j = 13 To 21
  15.                     Me.Controls("textbox" & j) = .Cells(i, j)
  16.                 Next
  17.                 TextBox12.Text = .Cells(i, 22)
  18.                 For j = 23 To 36
  19.                     Me.Controls("textbox" & j) = .Cells(i, j)
  20.                 Next
  21.                 TextBox7.Text = .Cells(i, 12)
  22.                 TextBox12.Text = .Cells(i, 22)
  23.                 TextBox22.Text = .Cells(i, 37)
  24.                 Exit For
  25.             End If
  26.         Next
  27.     End With
  28. End Sub

复制代码
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2011-12-7 21:11 | 显示全部楼层
回复

使用道具 举报

发表于 2011-12-7 21:14 | 显示全部楼层
回复

使用道具 举报

发表于 2011-12-7 21:23 | 显示全部楼层
本帖最后由 zjdh 于 2011-12-8 08:43 编辑

代码可以简化:
Private Sub ComboBox1_Change()
    With Sheets("菜品总表")
        For i = 2 To .Range("A65536").End(xlUp).Row
            If ComboBox1.Text = .Cells(i, 1) Then
                For j = 1 To 6
                    Me.Controls("textbox" & j) = .Cells(i, j + 1)
                Next
                For j = 8 To 11
                    Me.Controls("textbox" & j) = .Cells(i, j)
                Next
                For j = 13 To 21
                    Me.Controls("textbox" & j) = .Cells(i, j)
                Next
                TextBox12.Text = .Cells(i, 22)
                For j = 23 To 36
                    Me.Controls("textbox" & j) = .Cells(i, j)
                Next
                TextBox7.Text = .Cells(i, 12)
                TextBox12.Text = .Cells(i, 22)
                TextBox22.Text = .Cells(i, 37)
                Exit For
            Else
                For j = 1 To 36
                    Me.Controls("textbox" & j) = ""
                Next
            End If
        Next
    End With
End Sub

回复

使用道具 举报

发表于 2011-12-7 21:30 | 显示全部楼层
本帖最后由 zjdh 于 2011-12-8 08:42 编辑

这样运行速度快些:
Private Sub ComboBox1_Change()
    For j = 1 To 36
        Me.Controls("textbox" & j) = ""
    Next
    With Sheets("菜品总表")
        For i = 2 To .Range("A65536").End(xlUp).Row
            If ComboBox1.Text = .Cells(i, 1) Then
                For j = 1 To 6
                    Me.Controls("textbox" & j) = .Cells(i, j + 1)
                Next
                For j = 8 To 11
                    Me.Controls("textbox" & j) = .Cells(i, j)
                Next
                For j = 13 To 21
                    Me.Controls("textbox" & j) = .Cells(i, j)
                Next
                TextBox12.Text = .Cells(i, 22)
                For j = 23 To 36
                    Me.Controls("textbox" & j) = .Cells(i, j)
                Next
                TextBox7.Text = .Cells(i, 12)
                TextBox12.Text = .Cells(i, 22)
                TextBox22.Text = .Cells(i, 37)
                Exit For
            End If
        Next
    End With
End Sub

回复

使用道具 举报

发表于 2011-12-7 21:30 | 显示全部楼层
本帖最后由 suye1010 于 2011-12-7 21:32 编辑

你的代码本来就只能显示一行的数据啊,你有那么多的控件来显示所有的菜品吗?

回复

使用道具 举报

发表于 2011-12-7 21:35 | 显示全部楼层
若你的数据不是按行排列的话,那又另当别论了。
回复

使用道具 举报

 楼主| 发表于 2011-12-7 22:10 | 显示全部楼层
zjdh 发表于 2011-12-7 21:35
若你的数据不是按行排列的话,那又另当别论了。

高手,我把附件传上来了,你帮我看一下,我刚才用你的代码还是搞不出来````

菜单.rar

23.92 KB, 下载次数: 14

回复

使用道具 举报

 楼主| 发表于 2011-12-7 22:11 | 显示全部楼层
菜鸟锐 发表于 2011-12-7 21:14
支持楼上的看法

帮那个黄药师搞的,按他做的这个查询界面就搞不出来了,我一般都是用列表做的
回复

使用道具 举报

 楼主| 发表于 2011-12-7 22:32 | 显示全部楼层
本帖最后由 hytsky 于 2011-12-7 22:32 编辑
suye1010 发表于 2011-12-7 21:30
你的代码本来就只能显示一行的数据啊,你有那么多的控件来显示所有的菜品吗?


高手在吗?帮我看一下我上传的附件吧,,在8楼
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 21:04 , Processed in 0.646095 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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