使用命令按钮

时间:2017-08-03 13:35:30

标签: excel vba

我将两个称重秤连接到我的PC,并使用VBA教程和XMComm创建Excel用户表单,从秤中收集重量数据并将其放在单元格中。

我可以使用单独的命令按钮从每个比例中检索重量。我想将两个音阶组合成一个命令按钮。

我试过在命令按钮中将ActiveCell.Offset(0,1).Select放在两个Userforms之间。但是,当我使用此命令按钮时,活动单元格立即向右移动,并且只放置两个权重值中的一个。

我使用ActiveCell将此信息放在任何单元格中。

我认为这可能是各个用户表单本身的问题。当我尝试从仅与一个用户形式绑定的命令按钮放置一个重量时,有时不会放置重量。

这是userform代码:

Private Sub XMCommCRC1_OnComm()
    Static sInput As String
    Dim sTerminator As String
    Dim Buffer As Variant

' Branch according to the CommEvent property
    Select Case XMCommCRC1.CommEvent
    Case XMCOMM_EV_RECEIVE
        Buffer = XMCommCRC1.InputData ' Use Input property for MSComm
        sInput = sInput & Buffer
        If Worksheets("Settings").Range("Terminator") = "CR/LF" Then
            sTerminator = vbCrLf
        Else
            sTerminaotr = vbCr
        End If
        If Right$(sInput, Len(sTerminator)) = sTerminator Then
            XMCommCRC1.PortOpen = False
            sInput = Left$(sInput, Len(sInput) - Len(sTerminator))
            Select Case Left$(sInput, 2)
            Case "ST", "S "
                ActiveCell.Value = CDbl(Mid$(sInput, 7, 8))
                ActiveCell.Activate
            Case "US", "SD"
                MsgBox "The balance is unstable."
            Case "OL", "SI"
                MsgBox "The balance is showing an eror value."
            End Select
            sInput = ""
        End If
    End Select
End Sub


Public Sub RequestBalanceData()
    With Worksheets("Settings")
' Configure and open the COM port
        If Not XMCommCRC1.PortOpen Then
            XMCommCRC1.RThreshold = 1
            XMCommCRC1.RTSEnable = True
            XMCommCRC1.CommPort = .Range("COM_Port")
            XMCommCRC1.Settings = .Range("Baud_Rate") & "," & _
            .Range("Parity") & "," & _
            .Range("Data_Bits") & "," & _
            .Range("Stop_Bits")
            XMCommCRC1.PortOpen = True
        End If

' Send balance's "SI" (Send Immediate) command
' to request weighing data immediately
        If .Range("Terminator") = "CR/LF" Then
            XMCommCRC1.Output = "R" & vbCrLf
        Else
            XMCommCRC1.Output = "R" & vbCr
        End If
    End With
End Sub

我正在使用Excel 2007.
VBA教程 - http://www.msclims.com/lims/diybalance.html
指向XMCOMM的链接 - http://www.hardandsoftware.net/xmcomm.htm

0 个答案:

没有答案