1

インターネットを検索していて、問題がわからないようです。どんな助けでも大歓迎です。私のコードは次のとおりです。

Private Sub removebutton_Click()
Dim iRow As Long
Dim ws As Worksheet
Dim removebox As String
Set ws = Worksheets("Sheet2")
removebox = InputBox("Please Scan the Barcode to be added", "Add Coin", "Scan Barcode Here")
'Find the next blank row'
iRow = ws.Cells.Find(What:="*", SearchOrder:=xlRows, _
SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1

'Promt User To Actually input data if they have not entered anything'
If Trim(Me.removebox.Value) = "" Then
Me.removebox.SetFocus
MsgBox "Please enter barcode"
Exit Sub
End If

'For 20 digit barcodes split into 4 parts and record the data in the next blank row'
If Len(removebox) = 20 Then
Dim s1 As String
s1 = removebox.Substring(1, 6)
Dim s2 As String
s2 = removebox.Substring(7, 8)
Dim s3 As String
s3 = removebox.Substring(9)
Dim s4 As String
s4 = removebox.Substring(10, 20)

ws.Cells(iRow, 1).Value = Me.s1.Value
ws.Cells(iRow, 2).Value = Me.s2.Value
ws.Cells(iRow, 3).Value = Me.s3.Value
ws.Cells(iRow, 4).Value = Me.s4.Value

'For 18 Digit barcodes spilt into 3 parts and record the data in the next blank row'
ElseIf (removebox) = 18 Then
Dim s5 As String
s5 = removebox.Substring(1, 6)
Dim s6 As String
s6 = removebox.Substring(7, 8)
Dim s7 As String
s7 = removebox.Substring(9, 18)

ws.Cells(iRow, 1).Value = Me.s5.Value
ws.Cells(iRow, 2).Value = Me.s6.Value
ws.Cells(iRow, 3).Value = Me.s7.Value

'If not 20 or 18 digit then it is 16, split into 3 parts and record the data in the next blank row'
Else
Dim s8 As String
s8 = removebox.Substring(1, 6)
Dim s9 As String
s9 = removebox.Substring(7, 8)
Dim s10 As String
s10 = removebox.Substring(9, 16)

ws.Cells(iRow, 1).Value = Me.s8.Value
ws.Cells(iRow, 2).Value = Me.s9.Value
ws.Cells(iRow, 3).Value = Me.s10.Value
End If

End Sub

だから私はめちゃくちゃになり、コード全体がアイテムを削除することになっていて、代わりにそれは私が気付いたアイテムを追加します。私の問題はs1 = removebox.Substring(1, 6)、変数を強調表示してremovebox教えてくれることですCompiler Error: Invalid Qualifier。誰かが私に可能な解決策を教えてくれるなら、私は何か間違ったことをしていることを知っていますが、バーコードをスキャンすると、20、18、または16桁の整数として表示されますが、簡単に作成するには、パーツを個別に保存する必要がありますデータベースのルックアップ機能。

ヘルプや提案を事前に感謝します。

4

1 に答える 1

0

ケータリングの責任者は私をそれに打ち負かしました。ただし、すでに作業を行っているので、コードを貼り付けます。

20、18、または16桁の整数として入力されるバーコード

:上記に基づいて、私はそれを4つの等しい部分に分割していません。既存のコードを変換しただけです。

Option Explicit

Private Sub removebutton_Click()
    Dim iRow As Long
    Dim ws As Worksheet
    Dim removebox As String

    Set ws = Worksheets("Sheet2")

    removebox = InputBox("Please Scan the Barcode to be added", _
    "Add Coin", "Scan Barcode Here")

    '~~> Prompt User To Actually input data if they have not entered anything
    If Len(Trim(removebox)) = 0 Then
        MsgBox "Please enter barcode", vbCritical, "Please Try again"
        Exit Sub
    End If

    '~~> Find the next blank row
    iRow = ws.Cells.Find(What:="*", SearchOrder:=xlRows, _
    SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1

    ws.Cells(iRow, 1).Value = Left(removebox, 6)
    ws.Cells(iRow, 2).Value = Mid(removebox, 7, 8)

    Select Case Len(removebox)
        '~~> For 20 digit barcodes split into 4 parts and record
        '~~> the data in the next blank row'
        Case 20
            ws.Cells(iRow, 3).Value = Mid(removebox, 9)
            ws.Cells(iRow, 4).Value = Mid(removebox, 10, 20)
        '~~> For 18 Digit barcodes spilt into 3 parts and record
        '~~> the data in the next blank row'
        Case 18
            ws.Cells(iRow, 3).Value = Mid(removebox, 9, 18)
        '~~> If not 20 or 18 digit then it is 16, split into 3
        '~~> parts and record the data in the next blank row'
        Case Else
            ws.Cells(iRow, 3).Value = Mid(removebox, 9, 18)
    End Select
End Sub
于 2012-04-23T20:02:04.213 に答える