ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 4837|回复: 10

[分享] 答复第三杯茶关于凭证查询

[复制链接]

TA的精华主题

TA的得分主题

发表于 2004-9-29 14:30 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
r3MhTyj2.rar (19.78 KB, 下载次数: 282)

TA的精华主题

TA的得分主题

发表于 2004-9-29 15:19 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
<P>谢谢无名兄,这么热心的朋友当然能胜任版主了。无名兄的表现大家有目共睹,也请大家到会员广场投他一票,我强烈支持无名兄任会计电算化版块的版主!
</P>

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-9-29 15:34 | 显示全部楼层
<DIV class=quote><B>以下是引用<I>第三杯茶</I>在2004-9-29 15:19:00的发言:</B>

<P>谢谢无名兄,这么热心的朋友当然能胜任版主了。无名兄的表现大家有目共睹,也请大家到会员广场投他一票,我强烈支持无名兄任会计电算化版块的版主!
</P></DIV>
<P>
<P>       多谢茶兄这么支持我,其实我感觉你进步要比我快点多,前几天翻到你的一个贴子,你还在说“我不懂VBA,怎么办”,时隔几日,你的系统都做出来了,做的还相当不错。为你的进步贺彩。我做的这个凭证查询功能可能还不太完善,如果发现什么问题我们可以再探讨。在代码中如有什么不明白的地方尽管提出来。</P>

TA的精华主题

TA的得分主题

发表于 2004-9-29 17:46 | 显示全部楼层
<P>其实我还是很菜的,这不都消化半天了还没有全部弄明白!套用以后,最后一张凭证无法查找:</P>
<P>Private Sub CommandButton1_Click()
If TextBox1.Text = "" Then
     MsgBox "请填写凭证字号!", 1 + 64, "凭证查询"
     TextBox1.SetFocus
Else
    A = Sheets("凭证信息汇总").[a1]
        If TextBox1.Text &gt; A Then
           Unload UserForm1
           MsgBox "没有找到你需要的凭证字号!", 1 + 64, "凭证查询"
        Else
           With Sheets("凭证查询")               '以下带点的是对当前工作表"凭证查询"的操作
           .[I2] = TextBox1.Text
           AAA = Application.WorksheetFunction.CountA(Sheets("凭证信息汇总").Columns(4))   '表凭证信息汇总D列非空数
           Sheets("凭证信息汇总").Cells(AAA + 1, 1) = Application.WorksheetFunction.Max(Sheets("凭证信息汇总").Columns(1)) + 1
           Sheets("凭证查询").Range("A5:I10").ClearContents    '清空A5:I10
           X = Application.WorksheetFunction.Match(.[I2], Sheets("凭证信息汇总").Columns(1), 0)  '查找I2在凭证信息汇总中的位置
           Y = Application.WorksheetFunction.Match(.[I2] + 1, Sheets("凭证信息汇总").Columns(1), 0)       <b><FONT color=#f70909>'到最后一张凭证时是在这里出错的吧?
</FONT></b>           Z = Y - X
           For I = 1 To Z
           If Sheets("凭证信息汇总").Cells(X, 7) &gt; 0 Then       '从当前凭证号向下偏移7列值大于0
              K = K + 1   <FONT color=#ff0000><B>'为什么要这样用呢?
</B></FONT>           End If
           Next
           J = K - 1
           For M = 1 To J
           .Cells(M + 4, 2) = Sheets("凭证信息汇总").Cells(M + X - 1, 4)
           .Cells(M + 4, 3) = Sheets("凭证信息汇总").Cells(M + X - 1, 5)
           .Cells(M + 4, 4) = Sheets("凭证信息汇总").Cells(M + X - 1, 6)
           .Cells(M + 4, 8) = Sheets("凭证信息汇总").Cells(M + X - 1, 7)
           Next M
           For N = 1 To Z - J
           .Cells(N + 4 + J, 5) = Sheets("凭证信息汇总").Cells(N + X + J - 1, 4)
           .Cells(N + 4 + J, 6) = Sheets("凭证信息汇总").Cells(N + X + J - 1, 5)
           .Cells(N + 4 + J, 7) = Sheets("凭证信息汇总").Cells(N + X + J - 1, 6)
           .Cells(N + 4 + J, 9) = Sheets("凭证信息汇总").Cells(N + X + J - 1, 8)
           Next N</P>
<P>
           .[A5] = Sheets("凭证信息汇总").Cells(X, 3)
           Sheets("凭证信息汇总").Cells(AAA + 1, 1) = ""
            
                       
           End With
        End If
End If
Unload UserForm1
End Sub</P>
[此贴子已经被作者于2004-9-29 17:58:07编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-9-30 08:34 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
<P>可以实现最后一张凭证的查找啊如下图</P>
<img src="attachments/dvbbs/2004-9/200493083342517.bmp" border="0" onclick="zoom(this)" onload="if(this.width>document.body.clientWidth*0.5) {this.resized=true;this.width=document.body.clientWidth*0.5;this.style.cursor='pointer';} else {this.onclick=null}" alt="" />

答复第三杯茶关于凭证查询

答复第三杯茶关于凭证查询

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-9-30 08:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
我知道了,如果套用这个程序,在凭证信息汇总工作表中的A1公式去掉,是它影响查询,我在设置这个查询功能的时候,就把这个公式去掉了

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-9-30 08:54 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
<P>设置思路:</P>
<P>  <FONT color=#ee1111>要按凭证号查询首要要求出这个凭证记录所在的位置和所占用的行数</FONT></P>
<P><FONT color=#ee1111>  </FONT>X = Application.WorksheetFunction.Match(.[I2], Sheets("凭证信息汇总").Columns(1), 0)  '查找I2在凭证信息汇总中的位置</P>
<P>      行数我是这样设置的:先查找出下一个凭证号的位置比如查凭证号为<FONT color=#f73809><b>2</b></FONT>的凭证,查出凭证号<FONT color=#f70909>2</FONT>所在的位置,再查出凭证<b>号<FONT color=#ee3d11 size=3>3</FONT></b>的位置,两个位置的差就是凭证所占用的行数,也就是下面的几句:</P>
<P>     Y = Application.WorksheetFunction.Match(.[I2] + 1, Sheets("凭证信息汇总").Columns(1), 0)             </P>
<P>Z = Y - X           <FONT color=#e6421a>z即是凭证占用的行数</FONT></P>
<P>还有个问题:<FONT color=#f73809>就是最后一张凭证怎么办?它没有下一张凭证?</FONT>这个问题我是这样解决的,</P>
<P>它不是没有吗?我就先给它下面<FONT color=#e6421a>加上一个比它大1凭证号</FONT>,程序结束时再去掉</P>
<P><FONT color=#338e1d><b>AAA = Application.WorksheetFunction.CountA(Sheets("凭证信息汇总").Columns(4))   '表凭证信息汇总D列非空数
           Sheets("凭证信息汇总").Cells(AAA + 1, 1) = Application.WorksheetFunction.Max(Sheets("凭证信息汇总").Columns(1)) + 1
Sheets("凭证信息汇总").Cells(AAA + 1, 1) = ""</b></FONT></P>
<P>这个问题解决了,下一个就要面对的是<FONT color=#be310e>该凭证借方占几行? </FONT>下面几句就是解决这个问题的</P>
<P>          For I = 1 To Z
           If Sheets("凭证信息汇总").Cells(X, 7) &gt; 0 Then       '从当前凭证号向下偏移7列值大于0
              K = K + 1   </P>
<P><b><FONT color=#ff0000>           </FONT></b>End If
           Next
           J = K - 1
  确定借方占几行后就可以进行在凭证查询中填数了         </P>
<P>For M = 1 To J
           .Cells(M + 4, 2) = Sheets("凭证信息汇总").Cells(M + X - 1, 4)
           .Cells(M + 4, 3) = Sheets("凭证信息汇总").Cells(M + X - 1, 5)
           .Cells(M + 4, 4) = Sheets("凭证信息汇总").Cells(M + X - 1, 6)
           .Cells(M + 4, 8) = Sheets("凭证信息汇总").Cells(M + X - 1, 7)
           贷方占用行数是用借方<FONT color=#ce0f0f><b>倒推</b></FONT>出来的:
             For N = 1 To Z - J
           .Cells(N + 4 + J, 5) = Sheets("凭证信息汇总").Cells(N + X + J - 1, 4)
           .Cells(N + 4 + J, 6) = Sheets("凭证信息汇总").Cells(N + X + J - 1, 5)
           .Cells(N + 4 + J, 7) = Sheets("凭证信息汇总").Cells(N + X + J - 1, 6)
           .Cells(N + 4 + J, 9) = Sheets("凭证信息汇总").Cells(N + X + J - 1, 8)
           Next N</P>
<P>不知我这样解释的够不够明白?</P>
[此贴子已经被作者于2004-9-30 8:56:54编辑过]

TA的精华主题

TA的得分主题

发表于 2004-9-30 09:10 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
<P>有劳无名兄了,解释的非常明白,不胜感激!</P><P>再次感谢!!</P>

TA的精华主题

TA的得分主题

发表于 2008-2-1 16:44 | 显示全部楼层
<p>我有个问题,使用一下后发觉,该查询凭证的表格不能使用一借多贷或多借多贷的凭证,在实际应用中,这个情况应该有出现?</p><p>我也看不大懂不能修改,能否烦楼主再修改?</p>

TA的精华主题

TA的得分主题

发表于 2008-4-24 11:04 | 显示全部楼层
<p>大侠好</p><p>我的表和<strong>第三杯茶老兄关于凭证查询的表一样,查询完怎么</strong></p><p><strong>进行修改,并保存呢!!</strong></p><p><strong>&nbsp;&nbsp; 非常感谢</strong></p>
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-9-29 01:16 , Processed in 0.041070 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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