ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 代码纠错及优化,textbox数据不能完全同步

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-9-25 09:39 | 显示全部楼层 |阅读模式
如图,是一个记单词的窗体结构,我想在textbox8中,保持最高记录数据,在运行过程中,只能达到最高数值9,即便textbox3中的数据超过了数值9,textbox8中的数据不在同步更新,数据小于9时,可以同步。人为预先调高textbox8中的数据,超过9以上数据,运行几次后,数据也会自动跳回到9以下,再接着跟textbox3中的数据同步,到9为止。请老师帮忙分析问题出现的原因,如何修正。出错代码如下:
If Me.TextBox3.Value > Me.TextBox8 Then
            Me.TextBox8 = Me.TextBox3
            Sheets(sht).Range("t1") = Me.TextBox3
        Else
            Me.TextBox8 = Me.TextBox8
        End If

去掉假设条件,简单同步,可以更新最高数据,但达不到目的,保持最高记录的效果。另外涉及到循环不重复取值的代码如下,老师能否帮忙优化一下,谢谢!!!
Private Sub 下一个_Click()
    sht = Me.ComboBox1
    Me.TextBox1 = Sheets(sht).Range("N1")

    Sheets(sht).Range("Q1") = 2
    If Sheets(sht).Range("S1") > 0 Then
        x = Me.TextBox1
rrr:
        Randomize
        Me.TextBox2 = Int(Rnd() * x + 2)
        Row = Me.TextBox2
        If Sheets(sht).Range("f" & Row) = "☆" Then
            GoTo rrr
        Else
            Row = Me.TextBox2
        End If
    Else
        MsgBox "恭喜你全部过关 重新开始 OK!"
        x = Me.TextBox1
        Sheets(sht).Range("f2:f" & x + 1) = "◎"
        Me.TextBox3 = 0
        Exit Sub
    End If

    If Me.TextBox9 = 0 Then
        Me.TextBox10 = ""
    Else
        Me.TextBox10 = Sheets(sht).Range("c" & Row).Value
    End If

    Me.TextBox5 = ""
    Me.TextBox7 = ""
    Me.Label1 = ""
    If Me.TextBox6 = 1 Then
        Me.TextBox4 = Sheets(sht).Range("d" & Row)
    Else
        Me.TextBox4 = Sheets(sht).Range("b" & Row)
    End If
End Sub


最后一个问题,当我在textbox5中拼写完成回车(enter键),如何直接跳转执行“确定”命令按钮的内容。
完整代码详见附件。望各位老师不吝赐教,谢谢!!!
捕获.JPG

单词.rar

30.8 KB, 下载次数: 1

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-9-25 18:13 | 显示全部楼层
主要是第一个问题,为什么没人答复呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-9-26 09:51 | 显示全部楼层
出错的原因不清楚,但找到了解决的办法。就是窗体从单元格读取数据,而不是单元格从窗体读取数据。
Private Sub 确定_Click()
    sht = Me.ComboBox1
    If Me.ComboBox1 <> Sheets("说明").Range("a1") Then
        Sheets("说明").Range("a1") = Me.ComboBox1
    End If
   
    Row = Me.TextBox2
    Me.Label1 = "☆"
    Sheets(sht).Range("f" & Row).Value = "☆"
    Me.TextBox7.Value = Sheets(sht).Range("b" & Row).Value
   
    If Me.TextBox5.Value = Sheets(sht).Range("b" & Row).Value Then
     '   Me.TextBox3 = Me.TextBox3 + 1
        Sheets("说明").Range("a2") = Sheets("说明").Range("a2") + 1
       Me.TextBox3 = Sheets("说明").Range("a2")
        Me.Label1 = "☆"
        Sheets(sht).Range("f" & Row).Value = "☆"
        
    Else
        Me.TextBox7.Value = Sheets(sht).Range("b" & Row).Value
        Sheets("说明").Range("a2") = 0
       ' Me.TextBox3 = 0
        Me.Label1 = "△"
        Sheets(sht).Range("f" & Row).Value = "△"
    End If
   
    If Sheets("说明").Range("a3") >= Sheets("说明").Range("a2") Then
             Sheets("说明").Range("a3") = Sheets("说明").Range("a3")
            
            
        Else
        Sheets("说明").Range("a3") = Sheets("说明").Range("a2")
    End If
     Me.TextBox3 = Sheets("说明").Range("a2")
    Me.TextBox8 = Sheets("说明").Range("a3")
End Sub
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-23 08:03 , Processed in 0.037849 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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