Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

VBA的问题求老师解惑

c101  发表于:2018-09-14 08:42:47  
复制

Private Sub TEST_Click()
  Dim TXT as string
  myTXT="級別,件套,數量,品類,質類"
  call GetDATA(myTXT)
End SUB

Function GetDATA(xCtrl As String)     
    Dim Ctr1, Ctr2, Ctr3, Ctr4, Ctr5, Ctr6 , Ctr7, Ctr8, Ctr9     
    For i = 1 To Len(xCtrl)
        If Mid(xCtrl, i, 1) <> "," Then
            x = x & Mid(xCtrl, i, 1)
        Else

            "Ctr" & i =x    '類似此行

        End If

    Next
End Function

    希望的結果如下
    Ctr1="級別"
    Ctr2="件套"
    Ctr3="數量"
    Ctr4="品類"
    Ctr5="質類"
求老师帮忙解惑好吗
謝謝

 

Top
仙来 发表于:2018-09-14 10:47:33
c101 发表于:2018-09-14 14:41:37
谢谢仙来老师
不过要说抱歉
我未能表达清楚
Dim Ctr1, Ctr2, Ctr3, .... 这几个是 变量 

后续 VBA 简略如下
DO ......

    Ctr1=Ctr1+ Nz(rst!数量)
    Ctr2= Ctr2+ Nz(rst!金额)

Loop

西出阳关无故人 发表于:2018-09-17 17:25:54

不知道是不是你要的:

Private Sub Command0_Click()
 Dim TXT As String
  myTXT = "級別,件套,數量,品類,質類"
  Call GetDATAa(myTXT)
End Sub

Function GetDATAa(ByVal xCtrl As String) As Boolean

    Dim ary
    ary = Split(xCtrl, ",")
    For i = 1 To UBound(ary) + 1
        Debug.Print "Ctr" & i & " = " & """" & ary(i - 1) & """"
    Next

End Function


立即窗口显示:

Ctr1 = "級別"
Ctr2 = "件套"
Ctr3 = "數量"
Ctr4 = "品類"
Ctr5 = "質類"



c101 发表于:2018-09-20 15:33:42

对不起,我表达太差了。以下是我想的办法

也谢谢两位老师的帮忙

Function 计算合计(mF As String, sF As String, xCtrl As String)

    'mF 上层 窗体名称

    'sF  子窗体 名称

    'xCtrl子窗体 各字段

    '预留 5 个字段

    Dim Sum0  As Currency

    Dim Sum1  As Currency

    Dim Sum2  As Currency

    Dim Sum3  As Currency

    Dim Sum4  As Currency

   

    ctr = Split(xCtrl, ",")

    Set rst = Forms(mF)(sF).Form.RecordsetClone

    If rst.RecordCount <> 0 Then rst.MoveFirst

    '计算 子窗体 各字段 的 小计

    Do Until rst.EOF

        For i = 0 To UBound(ctr)

             Select Case i

             Case 0

                 Sum0 = Sum0 + Nz(rst(ctr(i)))

             Case 1

                 Sum1 = Sum1 + Nz(rst(ctr(i)))

             Case 2

                 Sum2 = Sum2 + Nz(rst(ctr(i)))

             Case 3

                 Sum3 = Sum3 + Nz(rst(ctr(i)))

             Case 4

                 Sum4 = Sum4 + Nz(rst(ctr(i)))

             End Select

        Next

        rst.MoveNext

    Loop

    Set rst = Nothing

   谢谢两位老师



总记录:4篇  页次:1/1 9 1 :