Im writing an excel sheet for work that when I press a button a loop runs through some rows and will edit some data if they’re empty but I cant seem to get the macro to run as it keeps returning the 450 error.
heres a simplified version of the code that wont run.(starts at option explicit ends at end sub formatting is acting up when I paste in)
Option Explicit
Sub Copypaste()
'
' Copypaste Macro
'
' Keyboard Shortcut: Ctrl+p
'
Dim i As Integer, j As Integer
Dim ls As Boolean
i = 2
j = 24
ls = True
Do While ls = True
If IsEmpty(i, j) = True Then
Cells(i, j).Value = 10
ls = False
Else
ls = True
End If
i = i + 1
j = j + 1
If i > 10 Then
ls = False
End If
Loop
End Sub
Ive searched loads of threads and I cant seem to find anyone with the same issue as mine as any fixes ive made don’t seem to be the problem.
New to macro as in discovered it today so could be a case of multiple errors
asked Feb 29, 2016 at 17:27
0
You need to change
If IsEmpty(i, j) = True Then
to
If IsEmpty(Cells(i, j).Value2) = True Then
answered Feb 29, 2016 at 17:33
![]()
4
Im writing an excel sheet for work that when I press a button a loop runs through some rows and will edit some data if they’re empty but I cant seem to get the macro to run as it keeps returning the 450 error.
heres a simplified version of the code that wont run.(starts at option explicit ends at end sub formatting is acting up when I paste in)
Option Explicit
Sub Copypaste()
'
' Copypaste Macro
'
' Keyboard Shortcut: Ctrl+p
'
Dim i As Integer, j As Integer
Dim ls As Boolean
i = 2
j = 24
ls = True
Do While ls = True
If IsEmpty(i, j) = True Then
Cells(i, j).Value = 10
ls = False
Else
ls = True
End If
i = i + 1
j = j + 1
If i > 10 Then
ls = False
End If
Loop
End Sub
Ive searched loads of threads and I cant seem to find anyone with the same issue as mine as any fixes ive made don’t seem to be the problem.
New to macro as in discovered it today so could be a case of multiple errors
asked Feb 29, 2016 at 17:27
0
You need to change
If IsEmpty(i, j) = True Then
to
If IsEmpty(Cells(i, j).Value2) = True Then
answered Feb 29, 2016 at 17:33
![]()
4
I’m trying to create a logic as the title but «Wrong number of arguments to IF. Expected between 2 and 3 arguments, but got 1 arguments» what am i doing wrong?
formula:
=IF(OR(U28=1,isnumber(MATCH("TERMINATE",P28,0)),"COMPLETE","PENDING"))
![]()
JDOaktown
4,0847 gold badges38 silver badges50 bronze badges
asked Oct 7, 2021 at 10:10
Mismatch of brackets () , try below formula:
=IF(OR(U28=1,isnumber(MATCH("TERMINATE",P28,0))),"COMPLETE","PENDING")
answered Oct 7, 2021 at 10:21
RockyRocky
9051 gold badge7 silver badges12 bronze badges
1
try:
=IF((U28=1)+(ISNUMBER(MATCH("TERMINATE", P28, ))), "COMPLETE", "PENDING")
answered Oct 7, 2021 at 21:35
![]()
player0player0
121k9 gold badges60 silver badges113 bronze badges
1
I’m trying to create a logic as the title but «Wrong number of arguments to IF. Expected between 2 and 3 arguments, but got 1 arguments» what am i doing wrong?
formula:
=IF(OR(U28=1,isnumber(MATCH("TERMINATE",P28,0)),"COMPLETE","PENDING"))
![]()
JDOaktown
4,0847 gold badges38 silver badges50 bronze badges
asked Oct 7, 2021 at 10:10
Mismatch of brackets () , try below formula:
=IF(OR(U28=1,isnumber(MATCH("TERMINATE",P28,0))),"COMPLETE","PENDING")
answered Oct 7, 2021 at 10:21
RockyRocky
9051 gold badge7 silver badges12 bronze badges
1
try:
=IF((U28=1)+(ISNUMBER(MATCH("TERMINATE", P28, ))), "COMPLETE", "PENDING")
answered Oct 7, 2021 at 21:35
![]()
player0player0
121k9 gold badges60 silver badges113 bronze badges
1
Чтобы немного расширить то, что говорят ориен и биаобиаоци. . .
Возможно, вас смущает то, что Method.invoke(Object, Object...) обычно может просто принимать аргументы «встроенными», так сказать; когда компилятор видит что-то вроде someMethod.invoke(someObject, arg1, arg2), он неявно создает массив new Object[]{arg1, arg2} а затем передает этот массив в Method.invoke. Method.invoke затем передает элементы этого массива в качестве аргументов вызываемому методу. Все идет нормально.
Но когда компилятор видит что-то вроде someMethod.invoke(someObject, someArray), предполагается, что вы уже упаковали аргументы в массив; так что он больше не будет их переупаковывать. Итак, тогда Method.invoke постараюсь пройти элементы of someArray в качестве аргументов вызываемого вами метода, вместо того, чтобы передавать someArray сам в качестве аргумента.
(Это всегда так ... обозначения произведений; он принимает или массив, содержащий элементы соответствующего типа, or ноль или более аргументов соответствующего типа.)
Итак, как сказали Ориен и Биаобиаоци, вам нужно перемотать parameters в дополнительный массив, new Object[] {parameters}, Так что parameters сам в конечном итоге передается в ваш метод.
Имеет ли это смысл?
Может быть, я ставлю круглые скобки неправильно или неверная запятая? Я знаю, что это довольно начинающий вопрос, поэтому заранее прошу прощения. У меня изначально был этот код:
es3.last_name || ', ' ||SUBSTR(es3.first_name,1,1)
Но es3 был Left Outer Join, поэтому все пробелы показывали ‘,’, поэтому я попробовал это ниже и получаю ОШИБКУ
ORA-00909: неверное количество аргументов
NVL(es3.last_name, ' ' , es3.last_name || ', ' ||SUBSTR(es3.first_name,1,1))
Спасибо!
3 ответа
Лучший ответ
Из документации:
Синтаксис для функции NVL в Oracle / PLSQL:
NVL( string1, replace_with )
Вы указываете 3 аргумента, отсюда и сообщение об ошибке. Я верю, что вы хотите это вместо этого:
CASE WHEN es3.last_name IS NULL
THEN ''
ELSE es3.last_name || ', ' ||SUBSTR(es3.first_name,1,1)
END
3
Community
20 Июн 2020 в 09:12
У вас должно быть только два аргумента для
функция nvl
Как в NVL(es3.last_name,'Özhan') возвращает Özhan, если es3.last_name равен нулю.
Проблема заключается в наличии более двух аргументов.
В вопросе проблемная часть .. ' ' , .. в
NVL (es3.last_name,
' ' ,es3.last_name || ‘,’ || SUBSTR ( es3.first_name , 1,1 ) )
1
Barbaros Özhan
19 Окт 2017 в 20:06
NVL может иметь только два аргумента
NVL(String, Value )
Таким образом, вышеприведенная функция будет возвращать «Значение», когда строка равна нулю. И «String» само по себе, когда строка не нулевая.
Используйте NVL2. NVL2 может иметь три аргумента
NVL2(String, Value_when_not_null, Value_When_Null)
Поэтому, когда String не равен NULL, он возвращает второй параметр. Когда String равен нулю, возвращается третий параметр.
Так что ваша функция должна быть
NVL2(es3.last_name||es3.first_name , es3.last_name||','||es3.first_name, ' ')
1
Valli
19 Окт 2017 в 20:03