ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   VBA code to erase an array element returning Error 2042 ??? (https://www.excelbanter.com/excel-programming/390697-vba-code-erase-array-element-returning-error-2042-a.html)

Patachoup

VBA code to erase an array element returning Error 2042 ???
 
Hello,

How to easily erase an single array element returning "Error 2042" using VBA
code ?

Thx in advance

Ben McBen

VBA code to erase an array element returning Error 2042 ???
 
I think we need some more background - is it a 1 or 2 dim array, do you
merely wnt to blank out the entry or actually delete it.

If its 1 dimensional, then the "Filter" function should be useful. If its
2d I think you will have to resort to more VBA.

Please also see:

http://www.ozgrid.com/forum/showthread.php?t=30439

"Patachoup" wrote:

Hello,

How to easily erase an single array element returning "Error 2042" using VBA
code ?

Thx in advance


Patachoup

VBA code to erase an array element returning Error 2042 ???
 
hello,

below is my code, I need to return Min and Max Values, but it doesn't work
if any value in the array returns error2042:

Thx

-----------------------
For iSrs = 1 To nSrs
'these are chart series
Yvals = ActiveChart.SeriesCollection(iSrs).Values
nVals = ActiveChart.SeriesCollection(iSrs).Points.Count

'test every single point in the serie
For iVals = 1 To nVals
If IsError(Yvals(iVals)) Then
Yvals.Points(iVals).Delete 'HERE is the line I
need to change!
End If
Next

Ymax(iSrs) = WorksheetFunction.max(Yvals)
Ymin(iSrs) = WorksheetFunction.min(Yvals)
Next
-----------------------




"Ben McBen" wrote:

I think we need some more background - is it a 1 or 2 dim array, do you
merely wnt to blank out the entry or actually delete it.

If its 1 dimensional, then the "Filter" function should be useful. If its
2d I think you will have to resort to more VBA.

Please also see:

http://www.ozgrid.com/forum/showthread.php?t=30439

"Patachoup" wrote:

Hello,

How to easily erase an single array element returning "Error 2042" using VBA
code ?

Thx in advance


Ben McBen

VBA code to erase an array element returning Error 2042 ???
 
There are various approaches, but I think it would be best if you just change
the underlying data - by wrapping you vlookup in an "if" to eliminate any
errors....

"Patachoup" wrote:

hello,

below is my code, I need to return Min and Max Values, but it doesn't work
if any value in the array returns error2042:

Thx

-----------------------
For iSrs = 1 To nSrs
'these are chart series
Yvals = ActiveChart.SeriesCollection(iSrs).Values
nVals = ActiveChart.SeriesCollection(iSrs).Points.Count

'test every single point in the serie
For iVals = 1 To nVals
If IsError(Yvals(iVals)) Then
Yvals.Points(iVals).Delete 'HERE is the line I
need to change!
End If
Next

Ymax(iSrs) = WorksheetFunction.max(Yvals)
Ymin(iSrs) = WorksheetFunction.min(Yvals)
Next
-----------------------




"Ben McBen" wrote:

I think we need some more background - is it a 1 or 2 dim array, do you
merely wnt to blank out the entry or actually delete it.

If its 1 dimensional, then the "Filter" function should be useful. If its
2d I think you will have to resort to more VBA.

Please also see:

http://www.ozgrid.com/forum/showthread.php?t=30439

"Patachoup" wrote:

Hello,

How to easily erase an single array element returning "Error 2042" using VBA
code ?

Thx in advance


Peter T

VBA code to erase an array element returning Error 2042 ???
 
Probably easier to make another array for your min/max functions

Untested -

' other declarations
Dim nCnt As Long
Dim arrVals() As Double

For iSrs = 1 To nSrs
'these are chart series

yVals = ActiveChart.SeriesCollection(iSrs).Values
nVals = ActiveChart.SeriesCollection(iSrs).Points.Count
nVals = UBound(yVals)
nCnt = 0
ReDim arrVals(1 To nVals)
'test every single point in the serie
For iVals = 1 To UBound(yVals)
If Not IsError(yVals(iVals)) Then
nCnt = nCnt + 1
arrVals(nCnt) = yVals(iVals)
End If
Next
If nCnt < nVals Then
ReDim Preserve arrVals(1 To nCnt)
End If

Ymax(iSrs) = WorksheetFunction.Max(arrVals)
Ymin(iSrs) = WorksheetFunction.Min(arrVals)
Next

Although Worksheet functions are extremly fast in cells they are not so fast
when called in VBA. I suspect it would be quicker to get your min/max values
directly in the loop, which would also avoid the need to make the second
array.

Regards,
Peter T

"Patachoup" wrote in message
...
hello,

below is my code, I need to return Min and Max Values, but it doesn't work
if any value in the array returns error2042:

Thx

-----------------------
For iSrs = 1 To nSrs
'these are chart series
Yvals = ActiveChart.SeriesCollection(iSrs).Values
nVals = ActiveChart.SeriesCollection(iSrs).Points.Count

'test every single point in the serie
For iVals = 1 To nVals
If IsError(Yvals(iVals)) Then
Yvals.Points(iVals).Delete 'HERE is the line

I
need to change!
End If
Next

Ymax(iSrs) = WorksheetFunction.max(Yvals)
Ymin(iSrs) = WorksheetFunction.min(Yvals)
Next
-----------------------




"Ben McBen" wrote:

I think we need some more background - is it a 1 or 2 dim array, do you
merely wnt to blank out the entry or actually delete it.

If its 1 dimensional, then the "Filter" function should be useful. If

its
2d I think you will have to resort to more VBA.

Please also see:

http://www.ozgrid.com/forum/showthread.php?t=30439

"Patachoup" wrote:

Hello,

How to easily erase an single array element returning "Error 2042"

using VBA
code ?

Thx in advance





All times are GMT +1. The time now is 01:30 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com