my barcode search wont find my barcode in my worksheet. my vba search code is not working properly
When I scan my item bar code in my input field (megBox) my for loop does not Find/Match my item.
It keeps saying "item not found".
It only finds this item(21603000815) and prints "Found value on row 1". (which in only one of the many items)
everything else returns:"item not found"
how can it find the other items?
Sub findIt()
Dim i As Long
Dim x As Integer, y As Integer, q As Integer
Worksheets(3).Activate
With Worksheets(3).Range("a1:d12") 'looking in sheet with all items
x = 0
Do While xforms <> -1
xforms = Application.InputBox("Enter Barcode", xTitleId, "", Type:=1)
Application.Visible = True
For q = 1 To 500 ' Revise the 500 to include all of your values
If Worksheets(3).Cells(q, 2).Value = xforms Or Worksheets(3).Cells(q, 2).Formula = xforms Then
MsgBox ("Found value on row " & q)
Application.Visible = True
GoTo skip
Else
MsgBox ("item Not Found")
Exit Sub
End If
Next q
skip:
' This MsgBox will only show if the loop completes with no success
MsgBox ("yessssssssssss")
Worksheets("Barcodes").Range("a1").Offset(y, 0).Value = xforms 'putting items/barcord in a seperate tad to check for dupliate items
Set c = .Find(xforms, LookIn:=xlValues)
c.Select
i = ActiveCell.Row
Rows(i).Select
Selection.Copy Worksheets("Shop Lable Info").Range("a1").Offset(x, 0)
Rows(i + 1).Select
Selection.Copy Worksheets("Shop Lable Info").Range("a2").Offset(x, 0)
x = x + 2
y = y + 1
Loop
End With
End Sub
excel vba excel-vba
add a comment |
When I scan my item bar code in my input field (megBox) my for loop does not Find/Match my item.
It keeps saying "item not found".
It only finds this item(21603000815) and prints "Found value on row 1". (which in only one of the many items)
everything else returns:"item not found"
how can it find the other items?
Sub findIt()
Dim i As Long
Dim x As Integer, y As Integer, q As Integer
Worksheets(3).Activate
With Worksheets(3).Range("a1:d12") 'looking in sheet with all items
x = 0
Do While xforms <> -1
xforms = Application.InputBox("Enter Barcode", xTitleId, "", Type:=1)
Application.Visible = True
For q = 1 To 500 ' Revise the 500 to include all of your values
If Worksheets(3).Cells(q, 2).Value = xforms Or Worksheets(3).Cells(q, 2).Formula = xforms Then
MsgBox ("Found value on row " & q)
Application.Visible = True
GoTo skip
Else
MsgBox ("item Not Found")
Exit Sub
End If
Next q
skip:
' This MsgBox will only show if the loop completes with no success
MsgBox ("yessssssssssss")
Worksheets("Barcodes").Range("a1").Offset(y, 0).Value = xforms 'putting items/barcord in a seperate tad to check for dupliate items
Set c = .Find(xforms, LookIn:=xlValues)
c.Select
i = ActiveCell.Row
Rows(i).Select
Selection.Copy Worksheets("Shop Lable Info").Range("a1").Offset(x, 0)
Rows(i + 1).Select
Selection.Copy Worksheets("Shop Lable Info").Range("a2").Offset(x, 0)
x = x + 2
y = y + 1
Loop
End With
End Sub
excel vba excel-vba
2
Despite your question I recommend to read and apply How to avoid using Select in Excel VBA to your code.
– Pᴇʜ
Nov 13 '18 at 15:43
On first glance - ignoring not declared variables yourFor q
loop looks at the first cell in the loop (B1
). If the value is found it says so and exits the loop, if it's not the value then a messagebox is displayed and the procedure exits. Just removing thatExit Sub
would cause the loop to carry on.
– Darren Bartrup-Cook
Nov 13 '18 at 16:32
Could you delete your original question as well please - can't vote to close it as it's already on hold.
– Darren Bartrup-Cook
Nov 13 '18 at 17:00
add a comment |
When I scan my item bar code in my input field (megBox) my for loop does not Find/Match my item.
It keeps saying "item not found".
It only finds this item(21603000815) and prints "Found value on row 1". (which in only one of the many items)
everything else returns:"item not found"
how can it find the other items?
Sub findIt()
Dim i As Long
Dim x As Integer, y As Integer, q As Integer
Worksheets(3).Activate
With Worksheets(3).Range("a1:d12") 'looking in sheet with all items
x = 0
Do While xforms <> -1
xforms = Application.InputBox("Enter Barcode", xTitleId, "", Type:=1)
Application.Visible = True
For q = 1 To 500 ' Revise the 500 to include all of your values
If Worksheets(3).Cells(q, 2).Value = xforms Or Worksheets(3).Cells(q, 2).Formula = xforms Then
MsgBox ("Found value on row " & q)
Application.Visible = True
GoTo skip
Else
MsgBox ("item Not Found")
Exit Sub
End If
Next q
skip:
' This MsgBox will only show if the loop completes with no success
MsgBox ("yessssssssssss")
Worksheets("Barcodes").Range("a1").Offset(y, 0).Value = xforms 'putting items/barcord in a seperate tad to check for dupliate items
Set c = .Find(xforms, LookIn:=xlValues)
c.Select
i = ActiveCell.Row
Rows(i).Select
Selection.Copy Worksheets("Shop Lable Info").Range("a1").Offset(x, 0)
Rows(i + 1).Select
Selection.Copy Worksheets("Shop Lable Info").Range("a2").Offset(x, 0)
x = x + 2
y = y + 1
Loop
End With
End Sub
excel vba excel-vba
When I scan my item bar code in my input field (megBox) my for loop does not Find/Match my item.
It keeps saying "item not found".
It only finds this item(21603000815) and prints "Found value on row 1". (which in only one of the many items)
everything else returns:"item not found"
how can it find the other items?
Sub findIt()
Dim i As Long
Dim x As Integer, y As Integer, q As Integer
Worksheets(3).Activate
With Worksheets(3).Range("a1:d12") 'looking in sheet with all items
x = 0
Do While xforms <> -1
xforms = Application.InputBox("Enter Barcode", xTitleId, "", Type:=1)
Application.Visible = True
For q = 1 To 500 ' Revise the 500 to include all of your values
If Worksheets(3).Cells(q, 2).Value = xforms Or Worksheets(3).Cells(q, 2).Formula = xforms Then
MsgBox ("Found value on row " & q)
Application.Visible = True
GoTo skip
Else
MsgBox ("item Not Found")
Exit Sub
End If
Next q
skip:
' This MsgBox will only show if the loop completes with no success
MsgBox ("yessssssssssss")
Worksheets("Barcodes").Range("a1").Offset(y, 0).Value = xforms 'putting items/barcord in a seperate tad to check for dupliate items
Set c = .Find(xforms, LookIn:=xlValues)
c.Select
i = ActiveCell.Row
Rows(i).Select
Selection.Copy Worksheets("Shop Lable Info").Range("a1").Offset(x, 0)
Rows(i + 1).Select
Selection.Copy Worksheets("Shop Lable Info").Range("a2").Offset(x, 0)
x = x + 2
y = y + 1
Loop
End With
End Sub
excel vba excel-vba
excel vba excel-vba
edited Nov 13 '18 at 15:41
Pᴇʜ
21.8k42750
21.8k42750
asked Nov 13 '18 at 15:40
Dermot JohnsonDermot Johnson
546
546
2
Despite your question I recommend to read and apply How to avoid using Select in Excel VBA to your code.
– Pᴇʜ
Nov 13 '18 at 15:43
On first glance - ignoring not declared variables yourFor q
loop looks at the first cell in the loop (B1
). If the value is found it says so and exits the loop, if it's not the value then a messagebox is displayed and the procedure exits. Just removing thatExit Sub
would cause the loop to carry on.
– Darren Bartrup-Cook
Nov 13 '18 at 16:32
Could you delete your original question as well please - can't vote to close it as it's already on hold.
– Darren Bartrup-Cook
Nov 13 '18 at 17:00
add a comment |
2
Despite your question I recommend to read and apply How to avoid using Select in Excel VBA to your code.
– Pᴇʜ
Nov 13 '18 at 15:43
On first glance - ignoring not declared variables yourFor q
loop looks at the first cell in the loop (B1
). If the value is found it says so and exits the loop, if it's not the value then a messagebox is displayed and the procedure exits. Just removing thatExit Sub
would cause the loop to carry on.
– Darren Bartrup-Cook
Nov 13 '18 at 16:32
Could you delete your original question as well please - can't vote to close it as it's already on hold.
– Darren Bartrup-Cook
Nov 13 '18 at 17:00
2
2
Despite your question I recommend to read and apply How to avoid using Select in Excel VBA to your code.
– Pᴇʜ
Nov 13 '18 at 15:43
Despite your question I recommend to read and apply How to avoid using Select in Excel VBA to your code.
– Pᴇʜ
Nov 13 '18 at 15:43
On first glance - ignoring not declared variables your
For q
loop looks at the first cell in the loop (B1
). If the value is found it says so and exits the loop, if it's not the value then a messagebox is displayed and the procedure exits. Just removing that Exit Sub
would cause the loop to carry on.– Darren Bartrup-Cook
Nov 13 '18 at 16:32
On first glance - ignoring not declared variables your
For q
loop looks at the first cell in the loop (B1
). If the value is found it says so and exits the loop, if it's not the value then a messagebox is displayed and the procedure exits. Just removing that Exit Sub
would cause the loop to carry on.– Darren Bartrup-Cook
Nov 13 '18 at 16:32
Could you delete your original question as well please - can't vote to close it as it's already on hold.
– Darren Bartrup-Cook
Nov 13 '18 at 17:00
Could you delete your original question as well please - can't vote to close it as it's already on hold.
– Darren Bartrup-Cook
Nov 13 '18 at 17:00
add a comment |
1 Answer
1
active
oldest
votes
I'm not 100% sure what all your code is meant to be doing. I hope the code below mirrors what you're expecting fairly closely.
You'll have to change the sheet names I've used and maybe change the last bit?
Public Sub FindIt()
Dim xForms As Long
Dim rSearch As Range
Dim rFound As Range
Dim sFirstAdd As String
Dim rCopyRange As Range
Dim xTitleID As String: xTitleID = "Title for InputBox"
xForms = Application.InputBox("Enter Barcode", xTitleID, "", Type:=1)
'Only continue if a number > 0 was entered in xForms.
'Pressing Cancel sets xForms to 0.
If xForms <> 0 Then
'ThisWorkbook is the file containing this code.
With ThisWorkbook.Worksheets("Sheet3")
Set rSearch = .Range(.Cells(1, 2), .Cells(.Rows.Count, 2).End(xlUp)) 'Row B1:B500 in your code.
End With
'Look for the first occurrence.
Set rFound = rSearch.Find(xForms, rSearch.Cells(1, 1), xlValues, xlWhole, , xlNext)
If Not rFound Is Nothing Then
Set rCopyRange = rFound
sFirstAdd = rFound.Address
'If a value was found then search for others.
'Stop when the search wraps back to the top again.
Do
Set rFound = rSearch.FindNext(rFound)
Set rCopyRange = Union(rCopyRange, rFound) 'Create a range from all the found values.
Loop While rFound.Address <> sFirstAdd
'Copy the found rows to the "Bar Codes" sheet.
With ThisWorkbook.Worksheets("Bar Codes")
rCopyRange.EntireRow.Copy Destination:=.Cells(.Rows.Count, 1).End(xlUp)
End With
End If
End If
End Sub
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53284526%2fmy-barcode-search-wont-find-my-barcode-in-my-worksheet-my-vba-search-code-is-no%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
I'm not 100% sure what all your code is meant to be doing. I hope the code below mirrors what you're expecting fairly closely.
You'll have to change the sheet names I've used and maybe change the last bit?
Public Sub FindIt()
Dim xForms As Long
Dim rSearch As Range
Dim rFound As Range
Dim sFirstAdd As String
Dim rCopyRange As Range
Dim xTitleID As String: xTitleID = "Title for InputBox"
xForms = Application.InputBox("Enter Barcode", xTitleID, "", Type:=1)
'Only continue if a number > 0 was entered in xForms.
'Pressing Cancel sets xForms to 0.
If xForms <> 0 Then
'ThisWorkbook is the file containing this code.
With ThisWorkbook.Worksheets("Sheet3")
Set rSearch = .Range(.Cells(1, 2), .Cells(.Rows.Count, 2).End(xlUp)) 'Row B1:B500 in your code.
End With
'Look for the first occurrence.
Set rFound = rSearch.Find(xForms, rSearch.Cells(1, 1), xlValues, xlWhole, , xlNext)
If Not rFound Is Nothing Then
Set rCopyRange = rFound
sFirstAdd = rFound.Address
'If a value was found then search for others.
'Stop when the search wraps back to the top again.
Do
Set rFound = rSearch.FindNext(rFound)
Set rCopyRange = Union(rCopyRange, rFound) 'Create a range from all the found values.
Loop While rFound.Address <> sFirstAdd
'Copy the found rows to the "Bar Codes" sheet.
With ThisWorkbook.Worksheets("Bar Codes")
rCopyRange.EntireRow.Copy Destination:=.Cells(.Rows.Count, 1).End(xlUp)
End With
End If
End If
End Sub
add a comment |
I'm not 100% sure what all your code is meant to be doing. I hope the code below mirrors what you're expecting fairly closely.
You'll have to change the sheet names I've used and maybe change the last bit?
Public Sub FindIt()
Dim xForms As Long
Dim rSearch As Range
Dim rFound As Range
Dim sFirstAdd As String
Dim rCopyRange As Range
Dim xTitleID As String: xTitleID = "Title for InputBox"
xForms = Application.InputBox("Enter Barcode", xTitleID, "", Type:=1)
'Only continue if a number > 0 was entered in xForms.
'Pressing Cancel sets xForms to 0.
If xForms <> 0 Then
'ThisWorkbook is the file containing this code.
With ThisWorkbook.Worksheets("Sheet3")
Set rSearch = .Range(.Cells(1, 2), .Cells(.Rows.Count, 2).End(xlUp)) 'Row B1:B500 in your code.
End With
'Look for the first occurrence.
Set rFound = rSearch.Find(xForms, rSearch.Cells(1, 1), xlValues, xlWhole, , xlNext)
If Not rFound Is Nothing Then
Set rCopyRange = rFound
sFirstAdd = rFound.Address
'If a value was found then search for others.
'Stop when the search wraps back to the top again.
Do
Set rFound = rSearch.FindNext(rFound)
Set rCopyRange = Union(rCopyRange, rFound) 'Create a range from all the found values.
Loop While rFound.Address <> sFirstAdd
'Copy the found rows to the "Bar Codes" sheet.
With ThisWorkbook.Worksheets("Bar Codes")
rCopyRange.EntireRow.Copy Destination:=.Cells(.Rows.Count, 1).End(xlUp)
End With
End If
End If
End Sub
add a comment |
I'm not 100% sure what all your code is meant to be doing. I hope the code below mirrors what you're expecting fairly closely.
You'll have to change the sheet names I've used and maybe change the last bit?
Public Sub FindIt()
Dim xForms As Long
Dim rSearch As Range
Dim rFound As Range
Dim sFirstAdd As String
Dim rCopyRange As Range
Dim xTitleID As String: xTitleID = "Title for InputBox"
xForms = Application.InputBox("Enter Barcode", xTitleID, "", Type:=1)
'Only continue if a number > 0 was entered in xForms.
'Pressing Cancel sets xForms to 0.
If xForms <> 0 Then
'ThisWorkbook is the file containing this code.
With ThisWorkbook.Worksheets("Sheet3")
Set rSearch = .Range(.Cells(1, 2), .Cells(.Rows.Count, 2).End(xlUp)) 'Row B1:B500 in your code.
End With
'Look for the first occurrence.
Set rFound = rSearch.Find(xForms, rSearch.Cells(1, 1), xlValues, xlWhole, , xlNext)
If Not rFound Is Nothing Then
Set rCopyRange = rFound
sFirstAdd = rFound.Address
'If a value was found then search for others.
'Stop when the search wraps back to the top again.
Do
Set rFound = rSearch.FindNext(rFound)
Set rCopyRange = Union(rCopyRange, rFound) 'Create a range from all the found values.
Loop While rFound.Address <> sFirstAdd
'Copy the found rows to the "Bar Codes" sheet.
With ThisWorkbook.Worksheets("Bar Codes")
rCopyRange.EntireRow.Copy Destination:=.Cells(.Rows.Count, 1).End(xlUp)
End With
End If
End If
End Sub
I'm not 100% sure what all your code is meant to be doing. I hope the code below mirrors what you're expecting fairly closely.
You'll have to change the sheet names I've used and maybe change the last bit?
Public Sub FindIt()
Dim xForms As Long
Dim rSearch As Range
Dim rFound As Range
Dim sFirstAdd As String
Dim rCopyRange As Range
Dim xTitleID As String: xTitleID = "Title for InputBox"
xForms = Application.InputBox("Enter Barcode", xTitleID, "", Type:=1)
'Only continue if a number > 0 was entered in xForms.
'Pressing Cancel sets xForms to 0.
If xForms <> 0 Then
'ThisWorkbook is the file containing this code.
With ThisWorkbook.Worksheets("Sheet3")
Set rSearch = .Range(.Cells(1, 2), .Cells(.Rows.Count, 2).End(xlUp)) 'Row B1:B500 in your code.
End With
'Look for the first occurrence.
Set rFound = rSearch.Find(xForms, rSearch.Cells(1, 1), xlValues, xlWhole, , xlNext)
If Not rFound Is Nothing Then
Set rCopyRange = rFound
sFirstAdd = rFound.Address
'If a value was found then search for others.
'Stop when the search wraps back to the top again.
Do
Set rFound = rSearch.FindNext(rFound)
Set rCopyRange = Union(rCopyRange, rFound) 'Create a range from all the found values.
Loop While rFound.Address <> sFirstAdd
'Copy the found rows to the "Bar Codes" sheet.
With ThisWorkbook.Worksheets("Bar Codes")
rCopyRange.EntireRow.Copy Destination:=.Cells(.Rows.Count, 1).End(xlUp)
End With
End If
End If
End Sub
answered Nov 13 '18 at 16:58
Darren Bartrup-CookDarren Bartrup-Cook
13.9k11432
13.9k11432
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53284526%2fmy-barcode-search-wont-find-my-barcode-in-my-worksheet-my-vba-search-code-is-no%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
2
Despite your question I recommend to read and apply How to avoid using Select in Excel VBA to your code.
– Pᴇʜ
Nov 13 '18 at 15:43
On first glance - ignoring not declared variables your
For q
loop looks at the first cell in the loop (B1
). If the value is found it says so and exits the loop, if it's not the value then a messagebox is displayed and the procedure exits. Just removing thatExit Sub
would cause the loop to carry on.– Darren Bartrup-Cook
Nov 13 '18 at 16:32
Could you delete your original question as well please - can't vote to close it as it's already on hold.
– Darren Bartrup-Cook
Nov 13 '18 at 17:00