数码之家

 找回密码
 立即注册
搜索
查看: 1012|回复: 12

[软件] VBA库存管理可视化运行报错求助

[复制链接]
发表于 2023-9-25 14:15:19 | 显示全部楼层 |阅读模式
改程序源自于:https://club.excelhome.net/threa ... tml?_dsign=b7411170
简单明了,一眼就能知道想要的物品放在哪里。节省查找时间。是工厂5S管理的很好的工具。
此程序并未完善,只可惜作者后来放弃了更新



原作者设置了ABCDE货位,考虑到实际使用,因此
我设置了ABCD货架,并设置了1-6为货架层数

当增加到D7行的时候程序报错,无奈VBA小白能力有限,百思不得其解,特来恳请大神相助。




Public c As String
Sub test()
Dim i As Integer
Dim str1, str2 As String
str1 = ""
For i = 62 To 81
str2 = "Private Sub Label" & i + 1 & "_Click()" & Chr(10) & _
    "UserForm2.Caption = 'A-" & i & "'" & Chr(10) & _
    "Me.Label" & i + 1 & ".BackColor = RGB(236, 28, 36)" & Chr(10) & _
    "UserForm2.Show" & Chr(10) & _
    "End Sub" & Chr(10) & _
    "Private Sub Label" & i + 1 & "_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)" & Chr(10) & _
    "Me.Label" & i + 1 & ".BackColor = RGB(88, 88, 88)" & _
    "End Sub" & Chr(10)
str1 = str1 + str2

Next
Sheet2.Range("a1") = str1
End Sub

Sub CaptionSet()
    Dim str As String
    Dim i As Integer
    For i = 2 To 216
            If i <= 7 Then
            With UserForm1.Controls("Label" & i)
            .Caption = "A1" & i - 8
            .TextAlign = fmTextAlignCenter
            End With
        ElseIf i <= 13 Then
            With UserForm1.Controls("Label" & i)
            .Caption = "A2" & i - 14
            .TextAlign = fmTextAlignCenter
            End With


InventoryManagementSystem原始版:密码“463517”        Vba工程的密码463517015smaw
InventoryManagementSystem修改版:密码“123”


恳求大神帮助,谢谢!





补充内容 (2023-9-27 16:53):
感谢 的帮助,我增加了货位,打开操作异常的慢,还有清理查询数据非常慢。https://wwlw.lanzouj.com/iO9Yy1a0zs6b

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
发表于 2023-9-25 15:41:41 | 显示全部楼层
用原版有没有问题???
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-25 15:49:48 | 显示全部楼层
邪恶海盗 发表于 2023-9-25 15:41
用原版有没有问题???

原版只有91个Label,我增加到Label139都正常,但是速度明显变慢了, 增加到Label139以后的就报错了
回复 支持 反对

使用道具 举报

发表于 2023-9-25 16:51:55 | 显示全部楼层
点开窗体列表看有没有对应的窗体。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-26 08:24:54 | 显示全部楼层
crazy0qwer 发表于 2023-9-25 16:51
点开窗体列表看有没有对应的窗体。

感谢回复! 窗体肯定有的,要不怎么91增加到139都正常
Public c As String
Sub test()
Dim i As Integer
Dim str1, str2 As String
str1 = ""
For i = 62 To 81
str2 = "Private Sub Label" & i + 1 & "_Click()" & Chr(10) & _
    "UserForm2.Caption = 'A-" & i & "'" & Chr(10) & _
    "Me.Label" & i + 1 & ".BackColor = RGB(236, 28, 36)" & Chr(10) & _
    "UserForm2.Show" & Chr(10) & _
    "End Sub" & Chr(10) & _
    "Private Sub Label" & i + 1 & "_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)" & Chr(10) & _
    "Me.Label" & i + 1 & ".BackColor = RGB(88, 88, 88)" & _
    "End Sub" & Chr(10)
str1 = str1 + str2

Next
Sheet2.Range("a1") = str1
End Sub

Sub CaptionSet()
    Dim str As String
    Dim i As Integer
    For i = 2 To 216
            If i <= 7 Then
            With UserForm1.Controls("Label" & i)
            .Caption = "A1" & i - 8
            .TextAlign = fmTextAlignCenter
            End With
        ElseIf i <= 13 Then
            With UserForm1.Controls("Label" & i)
            .Caption = "A2" & i - 14
            .TextAlign = fmTextAlignCenter
            End With
        ElseIf i <= 19 Then
            With UserForm1.Controls("Label" & i)
            .Caption = "A3" & i - 20
            .TextAlign = fmTextAlignCenter
            End With
        ElseIf i <= 25 Then
            With UserForm1.Controls("Label" & i)
            .Caption = "A4" & i - 26
            .TextAlign = fmTextAlignCenter
            End With
        ElseIf i <= 31 Then
            With UserForm1.Controls("Label" & i)
            .Caption = "A5" & i - 32
            .TextAlign = fmTextAlignCenter
            End With
        ElseIf i <= 37 Then
            With UserForm1.Controls("Label" & i)
            .Caption = "A6" & i - 38
            .TextAlign = fmTextAlignCenter
            End With
        ElseIf i <= 43 Then
            With UserForm1.Controls("Label" & i)
            .Caption = "A7" & i - 44
            .TextAlign = fmTextAlignCenter
            End With
        ElseIf i <= 49 Then
            With UserForm1.Controls("Label" & i)
            .Caption = "A8" & i - 50
            .TextAlign = fmTextAlignCenter
            End With
        ElseIf i <= 55 Then
            With UserForm1.Controls("Label" & i)
            .Caption = "B1" & i - 56
            .TextAlign = fmTextAlignCenter
            End With
        ElseIf i <= 61 Then
            With UserForm1.Controls("Label" & i)
            .Caption = "B2" & i - 62
            .TextAlign = fmTextAlignCenter
            End With
        ElseIf i <= 67 Then
            With UserForm1.Controls("Label" & i)
            .Caption = "B3" & i - 68
            .TextAlign = fmTextAlignCenter
            End With
        ElseIf i <= 73 Then
            With UserForm1.Controls("Label" & i)
            .Caption = "B4" & i - 74
            .TextAlign = fmTextAlignCenter
            End With
        ElseIf i <= 79 Then
            With UserForm1.Controls("Label" & i)
            .Caption = "B5" & i - 80
            .TextAlign = fmTextAlignCenter
            End With
        ElseIf i <= 85 Then
            With UserForm1.Controls("Label" & i)
            .Caption = "B6" & i - 86
            .TextAlign = fmTextAlignCenter
            End With
        ElseIf i <= 91 Then
            With UserForm1.Controls("Label" & i)
            .Caption = "B7" & i - 92
            .TextAlign = fmTextAlignCenter
            End With
        ElseIf i <= 97 Then
            With UserForm1.Controls("Label" & i)
            .Caption = "B8" & i - 98
            .TextAlign = fmTextAlignCenter
            End With
        ElseIf i <= 103 Then
            With UserForm1.Controls("Label" & i)
            .Caption = "B9" & i - 104
            .TextAlign = fmTextAlignCenter
            End With
        ElseIf i <= 109 Then
            With UserForm1.Controls("Label" & i)
            .Caption = "C1" & i - 110
            .TextAlign = fmTextAlignCenter
            End With
        ElseIf i <= 115 Then
            With UserForm1.Controls("Label" & i)
            .Caption = "C2" & i - 116
            .TextAlign = fmTextAlignCenter
            End With
        ElseIf i <= 121 Then
            With UserForm1.Controls("Label" & i)
            .Caption = "C3" & i - 122
            .TextAlign = fmTextAlignCenter
            End With
        ElseIf i <= 127 Then
            With UserForm1.Controls("Label" & i)
            .Caption = "C4" & i - 128
            .TextAlign = fmTextAlignCenter
            End With
        ElseIf i <= 133 Then
            With UserForm1.Controls("Label" & i)
            .Caption = "C5" & i - 134
            .TextAlign = fmTextAlignCenter
            End With
        ElseIf i <= 139 Then
            With UserForm1.Controls("Label" & i)
            .Caption = "C6" & i - 140
            .TextAlign = fmTextAlignCenter
            End With
        ElseIf i <= 145 Then
            With UserForm1.Controls("Label" & i)
            .Caption = "C7" & i - 146
            .TextAlign = fmTextAlignCenter
            End With
        ElseIf i <= 151 Then
            With UserForm1.Controls("Label" & i)
            .Caption = "C8" & i - 152
            .TextAlign = fmTextAlignCenter
            End With
        ElseIf i <= 157 Then
            With UserForm1.Controls("Label" & i)
            .Caption = "C9" & i - 158
            .TextAlign = fmTextAlignCenter
            End With
        ElseIf i <= 163 Then
            With UserForm1.Controls("Label" & i)
            .Caption = "D1" & i - 164
            .TextAlign = fmTextAlignCenter
            End With
        ElseIf i <= 169 Then
            With UserForm1.Controls("Label" & i)
            .Caption = "D2" & i - 170
            .TextAlign = fmTextAlignCenter
            End With
        ElseIf i <= 175 Then
            With UserForm1.Controls("Label" & i)
            .Caption = "D3" & i - 176
            .TextAlign = fmTextAlignCenter
            End With
        ElseIf i <= 181 Then
            With UserForm1.Controls("Label" & i)
            .Caption = "D4" & i - 182
            .TextAlign = fmTextAlignCenter
            End With
        ElseIf i <= 187 Then
            With UserForm1.Controls("Label" & i)
            .Caption = "D5" & i - 188
            .TextAlign = fmTextAlignCenter
            End With
        ElseIf i <= 193 Then
            With UserForm1.Controls("Label" & i)
            .Caption = "D6" & i - 194
            .TextAlign = fmTextAlignCenter
            End With
        End If
    Next
End Sub
Sub queryUserform2()
        Dim arr1 As arr
        Set arr1 = New arr
        Dim i As Integer
        i = arr1.ArrEqualTextval(Left(UserForm2.Caption, Len(UserForm2.Caption) - 11), Sheet1)
    If i > 0 Then
        UserForm2.TextBox1.Text = Sheet1.Range("b" & i).Value
        UserForm2.TextBox3.Text = Sheet1.Range("c" & i).Value
        Set arr1 = Nothing
        
        Set arr1 = New arr
        i = arr1.ArrEqualTextval(UserForm2.TextBox1.Value, Sheet2)
        If i > 0 Then
        UserForm2.TextBox2.Text = Sheet2.Cells(i, 2).Value
        End If
        Set arr1 = Nothing
    End If
End Sub
回复 支持 反对

使用道具 举报

发表于 2023-9-26 08:58:56 | 显示全部楼层
修改版发到网盘,这下载要55家元
回复 支持 反对

使用道具 举报

发表于 2023-9-26 11:32:06 来自手机浏览器 | 显示全部楼层
byanly 发表于 2023-9-26 08:24
感谢回复! 窗体肯定有的,要不怎么91增加到139都正常
Public c As String
Sub test()

那就给个网盘,论坛下载附件一个要五毛钱,你这两个就要一块钱了。
回复 支持 反对

使用道具 举报

发表于 2023-9-26 11:32:31 | 显示全部楼层
2023年9月26日修改,可以上216个仓位的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 反对

使用道具 举报

发表于 2023-9-26 11:48:26 来自手机浏览器 | 显示全部楼层
byanly 发表于 2023-9-26 08:24
感谢回复! 窗体肯定有的,要不怎么91增加到139都正常
Public c As String
Sub test()

话说你既然知道excelhome为什么不去那边发帖问问?
十年前我在那边答了不少问题,现在就算没落也不至于没人吧。
回复 支持 反对

使用道具 举报

发表于 2023-9-26 11:49:49 | 显示全部楼层
效果如图,但发现原程序出库就有问题吧

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-27 11:04:42 | 显示全部楼层
ohte 发表于 2023-9-26 11:49
效果如图,但发现原程序出库就有问题吧

感谢您的帮助,昨天我从头又梳理了一遍,稀里糊涂的就把问题给解决了。   这个程序  出入库功能是无效的,也没有能力整,暂时就当货位查询使用。再次感谢。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-27 11:06:31 | 显示全部楼层
crazy0qwer 发表于 2023-9-26 11:48
话说你既然知道excelhome为什么不去那边发帖问问?
十年前我在那边答了不少问题,现在就算没落也不至于没 ...

嗯,以前很多大师,或者说有经验的人都愿意帮忙。现在学技术的少了,愿意分享的就更少了。所以没有人回答
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-27 16:25:09 | 显示全部楼层
ohte 发表于 2023-9-26 11:49
效果如图,但发现原程序出库就有问题吧

经测试功能完整,再次感谢!        不知道是这种窗体实现的方式有问题,还是代码的问题,仓位越多程序异常的慢。 清空物料查询窗数据的时候也特别的慢,可以的话还请帮忙优化,谢谢。
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-2 05:09 , Processed in 0.187200 second(s), 11 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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