$$Excel-Macros$$ Re: Failure of code when trying to break a section out into a seperate routine

2012-07-19 Thread Anil Pandit
Thanks Asa,

I changed the code so that, in the parent procedure (PowerReturnOutput), I 
changed the data type of the array (Partnumber()) from String to 
Variable. When passing an array to the routine: EnterPN, I included open 
and closed brackets after the variable name. I also used brackets in 
EnterPN's first argument and it now seems to work fine. Thanks for the help 
again. I also do have an On Error Resume Next Statement in the parent 
routine of Sub PowerReturnOutput(), which would explain the seemingly 
strange flow.

I did see values in the array of the called procedure (PNArray) before it 
would exit, in the immediate window, which seems strange. The array was 
declared with a data type of String in the parent procedure 
(PowerReturnOutput()), before it was passed as an argument to the child 
(EnterPN) procedure. If you can offer an explanation for this, that would 
be great, however I am just happy it is working and that I know what I 
should do to pass an array as a sub or function argument in future.

Cheers!

Anil

On Sunday, July 15, 2012 11:04:27 AM UTC+1, Anil Pandit wrote:

 Hi all,

 I have the following code in a sub routine which works (please see code in 
 bold font), but which I want in a separate routine, so I can re-use the 
 code.

 --
 Sub PowerReturnOutput()

 '   This sub procedure looks up the part number on sheet 4 and returns the
 '   part number  description to sheet 2

 Dim PwrAndGnd() As Variant
 Dim Distance As Long
 Dim CableType As String
 Dim PwrColour As String
 Dim RtnColour As String
 Dim PartNumber(1 To 6) As String
 Dim PN As Variant
 Dim Cell As Range
 Dim TOPwrGndPN As Range
 Dim TOPwrGndDesc As Range
 Dim XGPwrAndGnd As Range
 
 Set TOPwrGndPN = Range(TOPwrGndPN)
 Set TOPwrGndDesc = Range(TOPwrGndDesc)
 Set XGPwrAndGnd = Worksheets(Eagle XG Input).Range(XGPwrAndGnd)
 
 '   Return an array with the XGArray function.
 PwrAndGnd = XGArray(XGPwrAndGnd)

 '   Extract elements into variables, adding 10 to BDFB distance.
 Distance = PwrAndGnd(1) + 10
 PwrColour = PwrAndGnd(3)
 RtnColour = PwrAndGnd(4)
 CableType = PwrAndGnd(5)
 
 '   Extract part numbers into an array
 PartNumber(1) = AWGxPwrRtnPN(Distance, PwrColour, CableType)
 PartNumber(2) = AWGxPwrRtnPN(Distance, RtnColour, CableType)
 PartNumber(3) = AWG1GndPN(CableType)
 PartNumber(4) = AWG6PwrRtnPN(PwrColour, CableType)
 PartNumber(5) = AWG6PwrRtnPN(RtnColour, CableType)
 PartNumber(6) = AWG6GndPN(CableType)
 
 *'   Enter the part numbers in sheet 2
 Call EnterPN(PartNumber, TOPwrGndPN)

 'For Each PN In PartNumber()
 'For Each Cell In TOPwrGndPN
 'If IsEmpty(Cell) Then
 'Cell.Value = PN
 'Exit For
 'End If
 'Next Cell
 'Next PN*

 '   Enter the descriptions in sheet 2
 For Each PN In PartNumber()
 For Each Cell In TOPwrGndDesc
 If IsEmpty(Cell) Then
 If PN = Not Available Then
 With Cell
 .Value = EAAA Brown AWG 2/0 cable is not 
 available.
 .Font.Italic = True
 .Font.Color = vbRed
 .Offset(0, -1).Font.Italic = True
 .Offset(0, -1).Font.Color = vbRed
 End With
 Exit For
 Else
 Cell = AWGxPNDesc(PN)
 Exit For
 End If
 End If
 Next Cell
 Next PN

 End Sub
 --

 I created another sub-routine which is called from the PowerReturnOutput 
 routine:

 --
 Sub EnterPN(PNArray, OutputRng)

 '   This sub procedure enters part numbers into the output range.

 Dim PN As Variant
 Dim Cell As Range

 For Each PN In PNArray()
 For Each Cell In OutputRng
 If IsEmpty(Cell) Then
 Cell.Value = PN
 Exit For
 End If
 Next Cell
 Next PN
 
 End Sub
 --
 The code does not work. When I set a break-point and step through the 
 code, I can see that the EnterPN routine is called and that PNArray() and 
 OutputRng have values in the immediate window. After the line:

 For Each PN In PNArray()

 The sub exits and returns to the parent of the parent routine from which 
 it was called (i.e the routine which called PowerReturnOutput())!

 I hope someone can help me understand and hopefully fix this behaviour.

 Regards,

 Anil
 --


-- 
-- 
FORUM RULES (986+ members already BANNED for violation)

1) Use concise, accurate thread titles. Poor thread titles, like Please Help, 
Urgent

$$Excel-Macros$$ Failure of code when trying to break a section out into a seperate routine

2012-07-15 Thread Anil Pandit
Hi all,

I have the following code in a sub routine which works (please see code in 
bold font), but which I want in a separate routine, so I can re-use the 
code.

--
Sub PowerReturnOutput()

'   This sub procedure looks up the part number on sheet 4 and returns the
'   part number  description to sheet 2

Dim PwrAndGnd() As Variant
Dim Distance As Long
Dim CableType As String
Dim PwrColour As String
Dim RtnColour As String
Dim PartNumber(1 To 6) As String
Dim PN As Variant
Dim Cell As Range
Dim TOPwrGndPN As Range
Dim TOPwrGndDesc As Range
Dim XGPwrAndGnd As Range

Set TOPwrGndPN = Range(TOPwrGndPN)
Set TOPwrGndDesc = Range(TOPwrGndDesc)
Set XGPwrAndGnd = Worksheets(Eagle XG Input).Range(XGPwrAndGnd)

'   Return an array with the XGArray function.
PwrAndGnd = XGArray(XGPwrAndGnd)

'   Extract elements into variables, adding 10 to BDFB distance.
Distance = PwrAndGnd(1) + 10
PwrColour = PwrAndGnd(3)
RtnColour = PwrAndGnd(4)
CableType = PwrAndGnd(5)

'   Extract part numbers into an array
PartNumber(1) = AWGxPwrRtnPN(Distance, PwrColour, CableType)
PartNumber(2) = AWGxPwrRtnPN(Distance, RtnColour, CableType)
PartNumber(3) = AWG1GndPN(CableType)
PartNumber(4) = AWG6PwrRtnPN(PwrColour, CableType)
PartNumber(5) = AWG6PwrRtnPN(RtnColour, CableType)
PartNumber(6) = AWG6GndPN(CableType)

*'   Enter the part numbers in sheet 2
Call EnterPN(PartNumber, TOPwrGndPN)

'For Each PN In PartNumber()
'For Each Cell In TOPwrGndPN
'If IsEmpty(Cell) Then
'Cell.Value = PN
'Exit For
'End If
'Next Cell
'Next PN*

'   Enter the descriptions in sheet 2
For Each PN In PartNumber()
For Each Cell In TOPwrGndDesc
If IsEmpty(Cell) Then
If PN = Not Available Then
With Cell
.Value = EAAA Brown AWG 2/0 cable is not 
available.
.Font.Italic = True
.Font.Color = vbRed
.Offset(0, -1).Font.Italic = True
.Offset(0, -1).Font.Color = vbRed
End With
Exit For
Else
Cell = AWGxPNDesc(PN)
Exit For
End If
End If
Next Cell
Next PN

End Sub
--

I created another sub-routine which is called from the PowerReturnOutput 
routine:

--
Sub EnterPN(PNArray, OutputRng)

'   This sub procedure enters part numbers into the output range.
   
Dim PN As Variant
Dim Cell As Range

For Each PN In PNArray()
For Each Cell In OutputRng
If IsEmpty(Cell) Then
Cell.Value = PN
Exit For
End If
Next Cell
Next PN

End Sub
--
The code does not work. When I set a break-point and step through the code, 
I can see that the EnterPN routine is called and that PNArray() and 
OutputRng have values in the immediate window. After the line:

For Each PN In PNArray()

The sub exits and returns to the parent of the parent routine from which it 
was called (i.e the routine which called PowerReturnOutput())!

I hope someone can help me understand and hopefully fix this behaviour.

Regards,

Anil
--

-- 
FORUM RULES (986+ members already BANNED for violation)

1) Use concise, accurate thread titles. Poor thread titles, like Please Help, 
Urgent, Need Help, Formula Problem, Code Problem, and Need Advice will not get 
quick attention or may not be answered.

2) Don't post a question in the thread of another member.

3) Don't post questions regarding breaking or bypassing any security measure.

4) Acknowledge the responses you receive, good or bad.

5)  Cross-promotion of, or links to, forums competitive to this forum in 
signatures are prohibited. 

NOTE  : Don't ever post personal or confidential data in a workbook. Forum 
owners and members are not responsible for any loss.

--
To post to this group, send email to excel-macros@googlegroups.com

To unsubscribe, send a blank email to excel-macros+unsubscr...@googlegroups.com

$$Excel-Macros$$ Re: Custom functions not being performed on L39, but they are performed on L40-L42

2012-05-01 Thread Anil Pandit
Asa - thanks again. 

I am busy this morning revisiting, rewriting and retesting all of the code 
in my project after your suggestions. I strongly believe in good practice 
and I'm grateful to you for helping me to improve in this area.

Best regards,

Anil

On Tuesday, April 24, 2012 11:12:56 AM UTC+1, Anil Pandit wrote:

 Hi all,

 I hope someone can help me, because I cannot see any reason why this isn't 
 working.

 No action is taken for cell L39, however cells L40-L42 behave as expected.

 *Step 1: A value is changed in cell L39*

 Private Sub *Worksheet_Change*(ByVal Target As Range)

 Application.EnableEvents = False
 Application.ScreenUpdating = False

 '   Check if the specified cells have been changed and
 '   call the corresponding routine

 Select Case Target.Address
 Case $C$3
  Call DisplayCabinetLayout
  Call ValidationType
 Case $C$4
  Call ACDCLocked
  Call ValidationType
 Case $C$5
  Call ApplicationType
 Case $C$8 To $C$9, _
  $C$16 To $C$23, _
  $C$27, _
  $C$30
  Call PositiveNumber(Target)
 Case $C$10 To $C$13, _
  $C$26, _
  $C$28 To $C$29, _
  $C$31, _
  $C$34 To $C$38, _
  $C$41 To $C$45, _
  $C$48 To $C$52, _
  $F$3, _
  $F$5 To $F$6, _
  $F$11 To $F$12, _
  $I$3, _
  $I$5 To $I$6, _
  $I$11 To $I$12, _
  $L$3 To $L$4, _
  $L$43 To $L$44
  Call ValidationType
 Case $F$8 To $F$9, _
  $I$8 To $I$9, _
  *$L$39* To $L$42
  Call ValidationType
  *Call EnclosureAdd(Target.Address)*
 Case Else
  Application.EnableEvents = True
  Exit Sub
 End Select

 Application.EnableEvents = True
 Application.ScreenUpdating = True

 End Sub

 *Step 2: The EnclosureAdd routine is called for cell L39*

 Sub EnclosureAdd(Rng As String)

 Dim PDU As String
 
 '   Extract the column and row Indices

 Col = Mid(Rng, 2, 1)
 Row = Mid(Rng, 4)
 PDU = Mid(Range(Col  Row), 1, 5)
 CellValue = Range(Col  Row)

 '   Use the column and row to add enclosures depending on whether
 '   Extra PDPs/PDUs are selected on sheet 1.

 Select Case Col
 Case Is = F
 Select Case Row
 Case Is = 8
 Range(Col  Row).Offset(1, 0) = CellValue
 Range(Col  16) = EN2Select(CellValue)
 Case Is = 9
 Range(Col  Row).Offset(-1, 0) = CellValue
 Range(Col  16) = EN2Select(CellValue)
 End Select
 Case Is = I
 Select Case Row
 Case Is = 8
 Range(Col  Row).Offset(1, 0) = CellValue
 Range(Col  24) = EN2Select(CellValue)
 Case Is = 9
 Range(Col  Row).Offset(-1, 0) = CellValue
 Range(Col  24) = EN2Select(CellValue)
 End Select
 *Case Is = L*
 Select Case Row
 *Case Is = 39*
* Range(Col  Row).Offset(1, 0) = PDUSelect(CellValue)
 Range(Col  9) = ENXSelect(CellValue)*
 Case Is = 40
 Range(Col  Row).Offset(-1, 0) = PDUSelect(CellValue)
 Range(Col  9) = ENXSelect(CellValue)
 Case Is = 41
 Range(Col  Row).Offset(1, 0) = PDUSelect(CellValue)
 Range(Col  19) = ENXSelect(CellValue)
 Case Is = 42
 Range(Col  Row).Offset(-1, 0) = PDUSelect(CellValue)
 Range(Col  19) = ENXSelect(CellValue)
 End Select
 End Select
 End Sub

 *Step 3: The **PDUSelect and ENXSelect Functions are called* *for cell 
 L39*

 Function PDUSelect(CellValue)
 Dim PDU As String
 Dim n As String

 If CellValue  Empty Slot Then
 '   Extract the string: PDU xn and toggle n.'
 PDU = Mid(CellValue, 1, 5)
 n = Mid(CellValue, 6, 1)
 If n = 1 Then
 n = 2
 ElseIf n = 2 Then
 n = 1
 End If
 PDUSelect = PDU  n
 Else
 PDUSelect = Empty Slot
 End If
 
 End Function
 Function ENXSelect(CellValue)

 Const C1EN2AC As String = C7000 Enclosure (805-0540-G02)

 If Mid(CellValue, 1, 3) = PDU Then
 ENXSelect = C1EN2AC
 Else
 ENXSelect = Empty Slot
 End If

 End Function


On Tuesday, April 24, 2012 11:12:56 AM UTC+1, Anil Pandit wrote:

 Hi all,

 I hope someone can help me, because I cannot see any reason why this isn't 
 working.

 No action is taken for cell L39, however cells L40-L42 behave as expected.

 *Step 1: A value is changed in cell L39*

 Private Sub *Worksheet_Change*(ByVal Target As Range)

 Application.EnableEvents = False
 Application.ScreenUpdating = False

 '   Check if the specified cells have been

$$Excel-Macros$$ Re: Custom functions not being performed on L39, but they are performed on L40-L42

2012-04-25 Thread Anil Pandit
Update: I commented out the Case structure on the Worksheet_Change routine 
and added a simple If Then Else test:

If Target.Address = $L$39 Then
Call EnclosureAdd(Target.Address)
End If

The code executed successfully. This means that the Case test is not 
catching cell L39 for some reason.

--Anil

On Tuesday, April 24, 2012 11:12:56 AM UTC+1, Anil Pandit wrote:

 Hi all,

 I hope someone can help me, because I cannot see any reason why this isn't 
 working.

 No action is taken for cell L39, however cells L40-L42 behave as expected.

 *Step 1: A value is changed in cell L39*

 Private Sub *Worksheet_Change*(ByVal Target As Range)

 Application.EnableEvents = False
 Application.ScreenUpdating = False

 '   Check if the specified cells have been changed and
 '   call the corresponding routine

 Select Case Target.Address
 Case $C$3
  Call DisplayCabinetLayout
  Call ValidationType
 Case $C$4
  Call ACDCLocked
  Call ValidationType
 Case $C$5
  Call ApplicationType
 Case $C$8 To $C$9, _
  $C$16 To $C$23, _
  $C$27, _
  $C$30
  Call PositiveNumber(Target)
 Case $C$10 To $C$13, _
  $C$26, _
  $C$28 To $C$29, _
  $C$31, _
  $C$34 To $C$38, _
  $C$41 To $C$45, _
  $C$48 To $C$52, _
  $F$3, _
  $F$5 To $F$6, _
  $F$11 To $F$12, _
  $I$3, _
  $I$5 To $I$6, _
  $I$11 To $I$12, _
  $L$3 To $L$4, _
  $L$43 To $L$44
  Call ValidationType
 Case $F$8 To $F$9, _
  $I$8 To $I$9, _
  *$L$39* To $L$42
  Call ValidationType
  *Call EnclosureAdd(Target.Address)*
 Case Else
  Application.EnableEvents = True
  Exit Sub
 End Select

 Application.EnableEvents = True
 Application.ScreenUpdating = True

 End Sub

 *Step 2: The EnclosureAdd routine is called for cell L39*

 Sub EnclosureAdd(Rng As String)

 Dim PDU As String
 
 '   Extract the column and row Indices

 Col = Mid(Rng, 2, 1)
 Row = Mid(Rng, 4)
 PDU = Mid(Range(Col  Row), 1, 5)
 CellValue = Range(Col  Row)

 '   Use the column and row to add enclosures depending on whether
 '   Extra PDPs/PDUs are selected on sheet 1.

 Select Case Col
 Case Is = F
 Select Case Row
 Case Is = 8
 Range(Col  Row).Offset(1, 0) = CellValue
 Range(Col  16) = EN2Select(CellValue)
 Case Is = 9
 Range(Col  Row).Offset(-1, 0) = CellValue
 Range(Col  16) = EN2Select(CellValue)
 End Select
 Case Is = I
 Select Case Row
 Case Is = 8
 Range(Col  Row).Offset(1, 0) = CellValue
 Range(Col  24) = EN2Select(CellValue)
 Case Is = 9
 Range(Col  Row).Offset(-1, 0) = CellValue
 Range(Col  24) = EN2Select(CellValue)
 End Select
 *Case Is = L*
 Select Case Row
 *Case Is = 39*
* Range(Col  Row).Offset(1, 0) = PDUSelect(CellValue)
 Range(Col  9) = ENXSelect(CellValue)*
 Case Is = 40
 Range(Col  Row).Offset(-1, 0) = PDUSelect(CellValue)
 Range(Col  9) = ENXSelect(CellValue)
 Case Is = 41
 Range(Col  Row).Offset(1, 0) = PDUSelect(CellValue)
 Range(Col  19) = ENXSelect(CellValue)
 Case Is = 42
 Range(Col  Row).Offset(-1, 0) = PDUSelect(CellValue)
 Range(Col  19) = ENXSelect(CellValue)
 End Select
 End Select
 End Sub

 *Step 3: The **PDUSelect and ENXSelect Functions are called* *for cell 
 L39*

 Function PDUSelect(CellValue)
 Dim PDU As String
 Dim n As String

 If CellValue  Empty Slot Then
 '   Extract the string: PDU xn and toggle n.'
 PDU = Mid(CellValue, 1, 5)
 n = Mid(CellValue, 6, 1)
 If n = 1 Then
 n = 2
 ElseIf n = 2 Then
 n = 1
 End If
 PDUSelect = PDU  n
 Else
 PDUSelect = Empty Slot
 End If
 
 End Function
 Function ENXSelect(CellValue)

 Const C1EN2AC As String = C7000 Enclosure (805-0540-G02)

 If Mid(CellValue, 1, 3) = PDU Then
 ENXSelect = C1EN2AC
 Else
 ENXSelect = Empty Slot
 End If

 End Function



-- 
FORUM RULES (986+ members already BANNED for violation)

1) Use concise, accurate thread titles. Poor thread titles, like Please Help, 
Urgent, Need Help, Formula Problem, Code Problem, and Need Advice will not get 
quick attention or may not be answered.

2) Don't post a question in the thread of another member.

3) Don't post questions regarding breaking or bypassing any security measure.

4

$$Excel-Macros$$ Re: Custom functions not being performed on L39, but they are performed on L40-L42

2012-04-25 Thread Anil Pandit
Update: I have changed the case expression list by breaking out the L 
column address expressions before the $L$39 expression and placing them 
below the $L$39 expression (see commented/bolded section in the code 
extract below) and the code executes successfully. I can see no reason why 
it didn't work initially and this work-around makes the code slightly 
messier. 

Any comments on this would be appreciated.

--A

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False
Application.ScreenUpdating = False

'   Check if the specified cells have been changed and
'   call the corresponding routine
'If Target.Address = $L$39 Then
'Call ValidationType
'Call EnclosureAdd(Target.Address)
'End If
'Select Case Target.Address
'Case $L$39
'Call ValidationType
'Call EnclosureAdd(Target.Address)
'End Select
Select Case Target.Address
Case $C$3
 Call DisplayCabinetLayout
 Call ValidationType
Case $C$4
 Call ACDCLocked
 Call ValidationType
Case $C$5
 Call ApplicationType
Case $C$8 To $C$9, _
 $C$16 To $C$23, _
 $C$27, _
 $C$30
 Call PositiveNumber(Target)
Case $C$10 To $C$13, _
 $C$26, _
 $C$28 To $C$29, _
 $C$31, _
 $C$34 To $C$38, _
 $C$41 To $C$45, _
 $C$48 To $C$52, _
 $F$3, _
 $F$5 To $F$6, _
 $F$11 To $F$12, _
 $I$3, _
 $I$5 To $I$6, _
 $I$11 To $I$12 ', _
*' $L$3 To $L$4 ', _
' $L$43 To $L$44*
 Call ValidationType
Case $F$8 To $F$9, _
 $I$8 To $I$9, _
 *$L$39* To $L$42
 Call ValidationType
 Call EnclosureAdd(Target.Address)
*Case $L$3 To $L$4, _
 $L$43 To $L$44*
 Call ValidationType
Case Else
 Application.EnableEvents = True
 Exit Sub
End Select

Application.EnableEvents = True
Application.ScreenUpdating = True

End Sub

On Wednesday, April 25, 2012 12:11:17 PM UTC+1, Anil Pandit wrote:

 Update: I commented out the Case structure on the Worksheet_Change routine 
 and added a simple If Then Else test:

 If Target.Address = $L$39 Then
 Call EnclosureAdd(Target.Address)
 End If

 The code executed successfully. This means that the Case test is not 
 catching cell L39 for some reason.

 --Anil

 On Tuesday, April 24, 2012 11:12:56 AM UTC+1, Anil Pandit wrote:

 Hi all,

 I hope someone can help me, because I cannot see any reason why this 
 isn't working.

 No action is taken for cell L39, however cells L40-L42 behave as expected.

 *Step 1: A value is changed in cell L39*

 Private Sub *Worksheet_Change*(ByVal Target As Range)

 Application.EnableEvents = False
 Application.ScreenUpdating = False

 '   Check if the specified cells have been changed and
 '   call the corresponding routine

 Select Case Target.Address
 Case $C$3
  Call DisplayCabinetLayout
  Call ValidationType
 Case $C$4
  Call ACDCLocked
  Call ValidationType
 Case $C$5
  Call ApplicationType
 Case $C$8 To $C$9, _
  $C$16 To $C$23, _
  $C$27, _
  $C$30
  Call PositiveNumber(Target)
 Case $C$10 To $C$13, _
  $C$26, _
  $C$28 To $C$29, _
  $C$31, _
  $C$34 To $C$38, _
  $C$41 To $C$45, _
  $C$48 To $C$52, _
  $F$3, _
  $F$5 To $F$6, _
  $F$11 To $F$12, _
  $I$3, _
  $I$5 To $I$6, _
  $I$11 To $I$12, _
  $L$3 To $L$4, _
  $L$43 To $L$44
  Call ValidationType
 Case $F$8 To $F$9, _
  $I$8 To $I$9, _
  *$L$39* To $L$42
  Call ValidationType
  *Call EnclosureAdd(Target.Address)*
 Case Else
  Application.EnableEvents = True
  Exit Sub
 End Select

 Application.EnableEvents = True
 Application.ScreenUpdating = True

 End Sub

 *Step 2: The EnclosureAdd routine is called for cell L39*

 Sub EnclosureAdd(Rng As String)

 Dim PDU As String
 
 '   Extract the column and row Indices

 Col = Mid(Rng, 2, 1)
 Row = Mid(Rng, 4)
 PDU = Mid(Range(Col  Row), 1, 5)
 CellValue = Range(Col  Row)

 '   Use the column and row to add enclosures depending on whether
 '   Extra PDPs/PDUs are selected on sheet 1.

 Select Case Col
 Case Is = F
 Select Case Row
 Case Is = 8
 Range(Col  Row).Offset(1, 0) = CellValue
 Range(Col  16) = EN2Select(CellValue)
 Case Is = 9
 Range(Col  Row).Offset(-1, 0) = CellValue
 Range(Col  16) = EN2Select(CellValue)
 End Select
 Case Is = I
 Select Case Row
 Case Is = 8
 Range(Col  Row).Offset(1, 0) = CellValue
 Range(Col  24) = EN2Select(CellValue)
 Case

$$Excel-Macros$$ Custom functions not being performed on L39, but they are performed on L40-L42

2012-04-24 Thread Anil Pandit
Hi all,

I hope someone can help me, because I cannot see any reason why this isn't 
working.

No action is taken for cell L39, however cells L40-L42 behave as expected.

*Step 1: A value is changed in cell L39*

Private Sub *Worksheet_Change*(ByVal Target As Range)

Application.EnableEvents = False
Application.ScreenUpdating = False

'   Check if the specified cells have been changed and
'   call the corresponding routine

Select Case Target.Address
Case $C$3
 Call DisplayCabinetLayout
 Call ValidationType
Case $C$4
 Call ACDCLocked
 Call ValidationType
Case $C$5
 Call ApplicationType
Case $C$8 To $C$9, _
 $C$16 To $C$23, _
 $C$27, _
 $C$30
 Call PositiveNumber(Target)
Case $C$10 To $C$13, _
 $C$26, _
 $C$28 To $C$29, _
 $C$31, _
 $C$34 To $C$38, _
 $C$41 To $C$45, _
 $C$48 To $C$52, _
 $F$3, _
 $F$5 To $F$6, _
 $F$11 To $F$12, _
 $I$3, _
 $I$5 To $I$6, _
 $I$11 To $I$12, _
 $L$3 To $L$4, _
 $L$43 To $L$44
 Call ValidationType
Case $F$8 To $F$9, _
 $I$8 To $I$9, _
 *$L$39* To $L$42
 Call ValidationType
 *Call EnclosureAdd(Target.Address)*
Case Else
 Application.EnableEvents = True
 Exit Sub
End Select

Application.EnableEvents = True
Application.ScreenUpdating = True

End Sub

*Step 2: The EnclosureAdd routine is called for cell L39*

Sub EnclosureAdd(Rng As String)

Dim PDU As String

'   Extract the column and row Indices

Col = Mid(Rng, 2, 1)
Row = Mid(Rng, 4)
PDU = Mid(Range(Col  Row), 1, 5)
CellValue = Range(Col  Row)

'   Use the column and row to add enclosures depending on whether
'   Extra PDPs/PDUs are selected on sheet 1.

Select Case Col
Case Is = F
Select Case Row
Case Is = 8
Range(Col  Row).Offset(1, 0) = CellValue
Range(Col  16) = EN2Select(CellValue)
Case Is = 9
Range(Col  Row).Offset(-1, 0) = CellValue
Range(Col  16) = EN2Select(CellValue)
End Select
Case Is = I
Select Case Row
Case Is = 8
Range(Col  Row).Offset(1, 0) = CellValue
Range(Col  24) = EN2Select(CellValue)
Case Is = 9
Range(Col  Row).Offset(-1, 0) = CellValue
Range(Col  24) = EN2Select(CellValue)
End Select
*Case Is = L*
Select Case Row
*Case Is = 39*
   * Range(Col  Row).Offset(1, 0) = PDUSelect(CellValue)
Range(Col  9) = ENXSelect(CellValue)*
Case Is = 40
Range(Col  Row).Offset(-1, 0) = PDUSelect(CellValue)
Range(Col  9) = ENXSelect(CellValue)
Case Is = 41
Range(Col  Row).Offset(1, 0) = PDUSelect(CellValue)
Range(Col  19) = ENXSelect(CellValue)
Case Is = 42
Range(Col  Row).Offset(-1, 0) = PDUSelect(CellValue)
Range(Col  19) = ENXSelect(CellValue)
End Select
End Select
End Sub

*Step 3: The **PDUSelect and ENXSelect Functions are called* *for cell L39
*

Function PDUSelect(CellValue)
Dim PDU As String
Dim n As String

If CellValue  Empty Slot Then
'   Extract the string: PDU xn and toggle n.'
PDU = Mid(CellValue, 1, 5)
n = Mid(CellValue, 6, 1)
If n = 1 Then
n = 2
ElseIf n = 2 Then
n = 1
End If
PDUSelect = PDU  n
Else
PDUSelect = Empty Slot
End If

End Function
Function ENXSelect(CellValue)

Const C1EN2AC As String = C7000 Enclosure (805-0540-G02)

If Mid(CellValue, 1, 3) = PDU Then
ENXSelect = C1EN2AC
Else
ENXSelect = Empty Slot
End If

End Function

-- 
FORUM RULES (986+ members already BANNED for violation)

1) Use concise, accurate thread titles. Poor thread titles, like Please Help, 
Urgent, Need Help, Formula Problem, Code Problem, and Need Advice will not get 
quick attention or may not be answered.

2) Don't post a question in the thread of another member.

3) Don't post questions regarding breaking or bypassing any security measure.

4) Acknowledge the responses you receive, good or bad.

5)  Cross-promotion of, or links to, forums competitive to this forum in 
signatures are prohibited. 

NOTE  : Don't ever post personal or confidential data in a workbook. Forum 
owners and members are not responsible for any loss.

--
To post to this group, send email to excel-macros@googlegroups.com


Re: $$Excel-Macros$$ Run-time error message: Method 'Hidden' of object 'Range' failed

2012-03-30 Thread Anil Pandit

Thanks for the reply Don.

I'm still getting the same Run-time error and then an Excel crash. The 
debug points to the line: Columns.Hidden = False, stating: Run-time 
error message: Method 'Hidden' of object 'Range' failed.

I created a sub-procedure to display a MsgBox with the value of 
Columns.Hidden. I could see that the value was False unless all columns 
were hidden, so I tried this statement:

Columns(E:L).Hidden = False

Excel produces the same error message and then crashes.

Regards,

Anil



On Thursday, March 29, 2012 12:02:53 AM UTC+1, Don Guillett wrote:


 'Assumes this in DV list
 'DC36U
 'DC44U
 'AC42U
  
 Private Sub Worksheet_Change(ByVal Target As Range)
 Dim DC36U As String
 Dim DC44U As String
 Dim AC42U As String
 
 '??DC36U = Tekelec Eagle XG 870-3040-06 (DC)
 '??DC44U = Tekelec Eagle XG 870-3068-06 (DC)
 '??AC42U = Tekelec Eagle XG  870-3042-06 (AC)
 Application.ScreenUpdating = False
 
 '   Test the value in Target and display the
 '   appropriate frame layout
 Columns.Hidden = False
 Range(C5) = DC
   Select Case Target
Case DC36U
 Columns(G:L).Hidden = True
Case DC44U
 Range(E1:G1,J1:l1).EntireColumn.Hidden = True
Case AC42U
 Columns(E:J).EntireColumn.Hidden = True
 Range(C5) = AC
 End Select
 Application.ScreenUpdating = True
 End Sub
  
 Don Guillett
 Microsoft MVP Excel
 SalesAid Software
 dguille...@gmail.com
   
  *From:* Anil Pandit apand...@gmail.com 
 *Sent:* Wednesday, March 28, 2012 11:04 AM
 *To:* excel-macros@googlegroups.com 
 *Subject:* $$Excel-Macros$$ Run-time error message: Method 'Hidden' of 
 object 'Range' failed
  
 Hi,

 I'm new to VBA and I'm posting this because I've been tearing my hair out 
 over this all day, so I hope someone has seen this before and can point me 
 in the right direction.

 I have created a worksheet change event which hides some columns according 
 to a string that is chosen from a list in cell C3. This all works fine 
 until I add any of the Range statements into the Select Case structure.

 When I select one of the three values of the cell from the Data Validation 
 drop-down list I have in cell C3, I receive: Run-time error message: 
 Method 'Hidden' of object 'Range' failed and then Excel crashes! I am 
 using Excel 2007.

 I would be very grateful if you could look at the following code and help 
 me.

 Best regards,

 Anil

 Private Sub Worksheet_Change(ByVal Target As Range)

 Dim DC36U As String
 Dim DC44U As String
 Dim AC42U As String
 
 DC36U = Tekelec Eagle XG 870-3040-06 (DC)
 DC44U = Tekelec Eagle XG 870-3068-06 (DC)
 AC42U = Tekelec Eagle XG  870-3042-06 (AC)
 
 
 '   Turn off screen updating
 Application.ScreenUpdating = False
 
 '   Assign an object reference to the Target variable
 Set Target = Range(C3)

 '   Test the value in Target and display the
 '   appropriate frame layout

 Select Case Target
 Case DC36U
 Columns.Hidden = False
 Columns(G:L).EntireColumn.Hidden = True
 *Range(C5) = DC*
 Case DC44U
 Columns.Hidden = False
 Columns(E:G).EntireColumn.Hidden = True
 Columns(J:L).EntireColumn.Hidden = True
 *Range(C5) = DC*
 Case AC42U
 Columns.Hidden = False
 Columns(E:J).EntireColumn.Hidden = True
 *Range(C5) = AC*
 End Select
 End Sub
 -- 
 FORUM RULES (986+ members already BANNED for violation)
  
 1) Use concise, accurate thread titles. Poor thread titles, like Please 
 Help, Urgent, Need Help, Formula Problem, Code Problem, and Need Advice 
 will not get quick attention or may not be answered.
  
 2) Don't post a question in the thread of another member.
  
 3) Don't post questions regarding breaking or bypassing any security 
 measure.
  
 4) Acknowledge the responses you receive, good or bad.
  
 5) Cross-promotion of, or links to, forums competitive to this forum in 
 signatures are prohibited. 
  
 NOTE : Don't ever post personal or confidential data in a workbook. Forum 
 owners and members are not responsible for any loss.
  

 --
 To post to this group, send email to excel-macros@googlegroups.com


On Thursday, March 29, 2012 12:02:53 AM UTC+1, Don Guillett wrote:


 'Assumes this in DV list
 'DC36U
 'DC44U
 'AC42U
  
 Private Sub Worksheet_Change(ByVal Target As Range)
 Dim DC36U As String
 Dim DC44U As String
 Dim AC42U As String
 
 '??DC36U = Tekelec Eagle XG 870-3040-06 (DC)
 '??DC44U = Tekelec Eagle XG 870-3068-06 (DC)
 '??AC42U = Tekelec Eagle XG  870-3042-06 (AC)
 Application.ScreenUpdating = False
 
 '   Test the value in Target and display the
 '   appropriate frame layout
 Columns.Hidden = False
 Range(C5) = DC
   Select Case Target
Case DC36U
 Columns(G:L).Hidden = True
Case

Re: $$Excel-Macros$$ Run-time error message: Method 'Hidden' of object 'Range' failed

2012-03-30 Thread Anil Pandit
Another point I wanted to note is that, when I remove the setting: 
Application.ScreenUpdating = False, Excel looks like it is in some kind of 
perpetual loop or at least going through a high level of CPU cycles before 
it crashes.

Regards,

Anil


On Friday, March 30, 2012 11:48:10 AM UTC+1, Anil Pandit wrote:


 Thanks for the reply Don.

 I'm still getting the same Run-time error and then an Excel crash. The 
 debug points to the line: Columns.Hidden = False, stating: Run-time 
 error message: Method 'Hidden' of object 'Range' failed.

 I created a sub-procedure to display a MsgBox with the value of 
 Columns.Hidden. I could see that the value was False unless all columns 
 were hidden, so I tried this statement:

 Columns(E:L).Hidden = False

 Excel produces the same error message and then crashes.

 Regards,

 Anil



 On Thursday, March 29, 2012 12:02:53 AM UTC+1, Don Guillett wrote:


 'Assumes this in DV list
 'DC36U
 'DC44U
 'AC42U
  
 Private Sub Worksheet_Change(ByVal Target As Range)
 Dim DC36U As String
 Dim DC44U As String
 Dim AC42U As String
 
 '??DC36U = Tekelec Eagle XG 870-3040-06 (DC)
 '??DC44U = Tekelec Eagle XG 870-3068-06 (DC)
 '??AC42U = Tekelec Eagle XG  870-3042-06 (AC)
 Application.ScreenUpdating = False
 
 '   Test the value in Target and display the
 '   appropriate frame layout
 Columns.Hidden = False
 Range(C5) = DC
   Select Case Target
Case DC36U
 Columns(G:L).Hidden = True
Case DC44U
 Range(E1:G1,J1:l1).EntireColumn.Hidden = True
Case AC42U
 Columns(E:J).EntireColumn.Hidden = True
 Range(C5) = AC
 End Select
 Application.ScreenUpdating = True
 End Sub
  
 Don Guillett
 Microsoft MVP Excel
 SalesAid Software
 dguille...@gmail.com
   
  *From:* Anil Pandit apand...@gmail.com 
 *Sent:* Wednesday, March 28, 2012 11:04 AM
 *To:* excel-macros@googlegroups.com 
 *Subject:* $$Excel-Macros$$ Run-time error message: Method 'Hidden' of 
 object 'Range' failed
  
 Hi,

 I'm new to VBA and I'm posting this because I've been tearing my hair out 
 over this all day, so I hope someone has seen this before and can point me 
 in the right direction.

 I have created a worksheet change event which hides some columns 
 according to a string that is chosen from a list in cell C3. This all 
 works fine until I add any of the Range statements into the Select Case 
 structure.

 When I select one of the three values of the cell from the Data 
 Validation drop-down list I have in cell C3, I receive: Run-time error 
 message: Method 'Hidden' of object 'Range' failed and then Excel crashes! 
 I am using Excel 2007.

 I would be very grateful if you could look at the following code and help 
 me.

 Best regards,

 Anil

 Private Sub Worksheet_Change(ByVal Target As Range)

 Dim DC36U As String
 Dim DC44U As String
 Dim AC42U As String
 
 DC36U = Tekelec Eagle XG 870-3040-06 (DC)
 DC44U = Tekelec Eagle XG 870-3068-06 (DC)
 AC42U = Tekelec Eagle XG  870-3042-06 (AC)
 
 
 '   Turn off screen updating
 Application.ScreenUpdating = False
 
 '   Assign an object reference to the Target variable
 Set Target = Range(C3)

 '   Test the value in Target and display the
 '   appropriate frame layout

 Select Case Target
 Case DC36U
 Columns.Hidden = False
 Columns(G:L).EntireColumn.Hidden = True
 *Range(C5) = DC*
 Case DC44U
 Columns.Hidden = False
 Columns(E:G).EntireColumn.Hidden = True
 Columns(J:L).EntireColumn.Hidden = True
 *Range(C5) = DC*
 Case AC42U
 Columns.Hidden = False
 Columns(E:J).EntireColumn.Hidden = True
 *Range(C5) = AC*
 End Select
 End Sub
 -- 
 FORUM RULES (986+ members already BANNED for violation)
  
 1) Use concise, accurate thread titles. Poor thread titles, like Please 
 Help, Urgent, Need Help, Formula Problem, Code Problem, and Need Advice 
 will not get quick attention or may not be answered.
  
 2) Don't post a question in the thread of another member.
  
 3) Don't post questions regarding breaking or bypassing any security 
 measure.
  
 4) Acknowledge the responses you receive, good or bad.
  
 5) Cross-promotion of, or links to, forums competitive to this forum in 
 signatures are prohibited. 
  
 NOTE : Don't ever post personal or confidential data in a workbook. Forum 
 owners and members are not responsible for any loss.
  

 --
 To post to this group, send email to excel-macros@googlegroups.com


 On Thursday, March 29, 2012 12:02:53 AM UTC+1, Don Guillett wrote:


 'Assumes this in DV list
 'DC36U
 'DC44U
 'AC42U
  
 Private Sub Worksheet_Change(ByVal Target As Range)
 Dim DC36U As String
 Dim DC44U As String
 Dim AC42U As String
 
 '??DC36U = Tekelec Eagle XG 870-3040-06 (DC

$$Excel-Macros$$ Run-time error message: Method 'Hidden' of object 'Range' failed

2012-03-28 Thread Anil Pandit
Hi,

I'm new to VBA and I'm posting this because I've been tearing my hair out 
over this all day, so I hope someone has seen this before and can point me 
in the right direction.

I have created a worksheet change event which hides some columns according 
to a string that is chosen from a list in cell C3. This all works fine 
until I add any of the Range statements into the Select Case structure.

When I select one of the three values of the cell from the Data Validation 
drop-down list I have in cell C3, I receive: Run-time error message: 
Method 'Hidden' of object 'Range' failed and then Excel crashes! I am 
using Excel 2007.

I would be very grateful if you could look at the following code and help 
me.

Best regards,

Anil

Private Sub Worksheet_Change(ByVal Target As Range)

Dim DC36U As String
Dim DC44U As String
Dim AC42U As String

DC36U = Tekelec Eagle XG 870-3040-06 (DC)
DC44U = Tekelec Eagle XG 870-3068-06 (DC)
AC42U = Tekelec Eagle XG  870-3042-06 (AC)


'   Turn off screen updating
Application.ScreenUpdating = False

'   Assign an object reference to the Target variable
Set Target = Range(C3)

'   Test the value in Target and display the
'   appropriate frame layout

Select Case Target
Case DC36U
Columns.Hidden = False
Columns(G:L).EntireColumn.Hidden = True
*Range(C5) = DC*
Case DC44U
Columns.Hidden = False
Columns(E:G).EntireColumn.Hidden = True
Columns(J:L).EntireColumn.Hidden = True
*Range(C5) = DC*
Case AC42U
Columns.Hidden = False
Columns(E:J).EntireColumn.Hidden = True
*Range(C5) = AC*
End Select
End Sub

-- 
FORUM RULES (986+ members already BANNED for violation)

1) Use concise, accurate thread titles. Poor thread titles, like Please Help, 
Urgent, Need Help, Formula Problem, Code Problem, and Need Advice will not get 
quick attention or may not be answered.

2) Don't post a question in the thread of another member.

3) Don't post questions regarding breaking or bypassing any security measure.

4) Acknowledge the responses you receive, good or bad.

5)  Cross-promotion of, or links to, forums competitive to this forum in 
signatures are prohibited. 

NOTE  : Don't ever post personal or confidential data in a workbook. Forum 
owners and members are not responsible for any loss.

--
To post to this group, send email to excel-macros@googlegroups.com