Thread: type mismatch
View Single Post
  #4   Report Post  
Posted to microsoft.public.excel.programming
Norman Jones Norman Jones is offline
external usenet poster
 
Posts: 5,302
Default type mismatch

Hi V,

Barb's suggestion works for me, provided that,
as suggested, you confirm the formula with the
key combination

CTRL-SHIFT-ENTER.

rather than Enter.

For your purposes. however, I think that you
should change Barb's +3 to +1.

To utlise your function, try the following
adaptation:

'=============
Function b(r As Range) As Variant
Dim i As Long, j As Long
Dim arr As Variant
arr = r.Value
For i = 1 To UBound(arr, 1)
For j = 1 To UBound(arr, 2)
arr(i, j) = arr(i, j) + 1
Next j
Next i
b = arr
End Function
'<<=============


---
Regards,
Norman


"vsoler" wrote in message
ps.com...
On 10 jun, 01:34, Barb Reinhardt
wrote:
Why not select B1:B3 and enter the following

= (select A1:A3) + 3

Commit with CTRL SHIFT ENTER.



"vsoler" wrote:
I am a beginner in programming VBA


I want to write a function that returns an array where each element is
increased by 1.


However, something is not working. Could you please help me?


Function b(r As Range)
Dim i As Integer, j As Integer
b = r
For i = 1 To UBound(b, 1)
For j = 1 To UBound(b, 2)
b(i, j) = b(i, j) + 1
Next j
Next i
End Function


For example,


............A..........B
1.........1...........2
2.........2...........3
3.........3...........4


In this case, B1:B3 contains the formula =b(A1:a3) entered with
Ctrl-Shift-Enter


Thank you- Ocultar texto de la cita -


- Mostrar texto de la cita -


Barb,

The solution you propose does not work in my Excel 2003. I get a value
of 3 in all my 3 cells.

I'd rather have a function, because I need to preserve the original
values and put the result of the calculation just side by side.

Can anybody help?