View Single Post
  #11   Report Post  
Posted to microsoft.public.excel.programming
JLatham JLatham is offline
external usenet poster
 
Posts: 2,203
Default are there any VBA consultants left ? - will pay for help

First - the Fix!!
It was a head scratcher for a file, not readily apparent unless you really
dig into the code a bit. First clue: there is NOT an Option Explicit
statement in the module.
Second clue: in that procedure what was NOT shown in the code he put up here
were 3 lines just ahead of it:
For iSheetIndex = iPrevIsol To iCurrentDay
strSheetName = iSheetIndex
Sheets(strSheetName).Activate

Because strSheetName was created 'on the fly' it took on the integer typing
of iSheetIndex!! and so when Sheets(strSheetName) was used in the code, VBA
interpreted it as
Sheets(1) instead of Sheets("1") as intended!!
Sheets(1) happens to be a worksheet named "workdata", not "1" and on
"workdata", J5 is empty, so the test for = "Y or ="y" legitimately failed.

It took me about a half-hour of head scratching which led to thumb sucking
numbness before I figured it out.

I didn't charge him any time for it -- seemed a good way to introduce myself
to him, and we seem to have struck up some sort of agreement. So ain't 100%
true what they say about Okies not being able to get along with Texicans!!


"Dave Peterson" wrote:

I don't see anything wrong with your code. I'm gonna guess that it's your data
that doesn't match what you want -- maybe there's an extra space
(leading/trailing) in that field.

You could check it again or write your code to eliminate those extra spaces:

With Worksheets(strSheetName)
For iDSLineCounter = 1 To 20
If Trim(LCase(.Cells(4 + iDSLineCounter, 10).Value)) _
= LCase("Y") Then
' *** Copy Bed Number
.Cells(4 + iDSLineCounter, 1).Copy
Worksheets("Isolation").Cells(5 + iListCounter, 3).PasteSpecial
_
Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=True, Transpose:=False
' *** Copy Patient Name
.Cells(4 + iDSLineCounter, 2).Copy
Worksheets("Isolation").Cells(5 + iListCounter, 4).PasteSpecial
_
Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=True, Transpose:=False
iListCounter = iListCounter + 1
End If
Next iDSLineCounter
end with

(I added trim() and compared using lcase() on both sides of the comparison
operator.)

The with/end with saves some typing and (I think) makes it easier to read.

DonJ_Austin wrote:

Thanks to EVERYONE who reponded. To those who suggested I post more
information here, the issue is not one of syntax. When the code below is
executed, the condition is true (double-checked) but the conditional code is
not run. This same routine (and more) have been working in another place
with only one variable change, and that is been checked for existence and
spelling.

I will be following up with those who provided contact info so I can deliver
the program in question.

For iDSLineCounter = 1 To 20
If Sheets(strSheetName).Cells(4 + iDSLineCounter, 10) = "Y" Or _
Sheets(strSheetName).Cells(4 + iDSLineCounter, 10) = "y" Then

' *** Copy Bed Number
Sheets(strSheetName).Cells(4 + iDSLineCounter, 1).Copy
Sheets("Isolation").Cells(5 + iListCounter, 3).PasteSpecial
Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=True, Transpose:=False
' *** Copy Patient Name
Sheets(strSheetName).Cells(4 + iDSLineCounter, 2).Copy
Sheets("Isolation").Cells(5 + iListCounter, 4).PasteSpecial
Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=True, Transpose:=False

iListCounter = iListCounter + 1
End If

Next iDSLineCounter

"Rick Rothstein" wrote:

If the "fix" is not too extensive, we might be able to handle it here for
you at no cost. Can you provide more information so we can see what you
actually need?

--
Rick (MVP - Excel)



"DonJ_Austin" wrote in message
...
These forums are great, but I really need some help quickly with something
that I MUST fix. How can I find someone within hours who can help
troubleshoot (Excel 2007 / VBA) for money ?

.


--

Dave Peterson
.