Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 79
Default type mismatch

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

  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,355
Default type mismatch

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


  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 79
Default type mismatch

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?

  #4   Report Post  
Posted to microsoft.public.excel.programming
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?



  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 79
Default type mismatch

On 10 jun, 09:36, "Norman Jones"
wrote:
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?- Ocultar texto de la cita -


- Mostrar texto de la cita -


Norman,

It works fine, many thanks.

However, I cannot still understand why I have to use an intermediate
variant array "arr" instead of using directly the function name "b",
since both of them are variant. Where is the difference between the
two?

Thanks again



  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,302
Default type mismatch

Hi V,

'---------------
It works fine, many thanks.

However, I cannot still understand why I have to use an intermediate
variant array "arr" instead of using directly the function name "b",
since both of them are variant. Where is the difference between the
two?
'---------------

You have named your function as b and the
function expects a single range argument.

Therefore, attempting to pass multiple Integer
(or Long) values in the line:

b(i, j) = b(i, j) + 1


will cause the encountered problem.


---
Regards,
Norman


Norman,

It works fine, many thanks.

However, I cannot still understand why I have to use an intermediate
variant array "arr" instead of using directly the function name "b",
since both of them are variant. Where is the difference between the
two?

Thanks again



Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Type Mismatch!!! sbowman Excel Programming 6 July 7th 06 03:10 PM
Type Mismatch: array or user defined type expected ExcelMonkey Excel Programming 4 July 6th 06 03:40 PM
Type mismatch using rnge as Range with Type 8 Input Box STEVE BELL Excel Programming 11 December 3rd 05 05:02 AM
Help: Compile error: type mismatch: array or user defined type expected lvcha.gouqizi Excel Programming 1 October 31st 05 08:20 PM
Type mismatch Patti[_5_] Excel Programming 3 May 30th 04 02:44 PM


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

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"