Доброй ночи. |
|
а где приложенный файл с примером? P.S. 1004 — своеобразная ошибка и скорее всего она не относится к коду никак (т.е. код правильный и причина в чём-то другом) |
|
У вас, скорее всего, ячейка пустая тут Cells(i, 2).Value |
|
Я попробовал ваш код (со своими переменными), всё нормально работает. Но если ячейка по адресу Cells(i, 2).Value пустая, то выскакивает ошибка 1004 |
|
приложил файл, всё равно не работает независимо от того, пустая ли ячейка, или нет Sub asdf() Do While i <> 6 End Sub |
|
«невозможно получить свойство vlookup класса worksheetfunction» — такая ошибка |
|
Заработал код ниже: ошибки нашёл, вроде понял. Если только небольшой ликбез кто-то сможет устроить. Чем отличается Application.VLookup от Application.WorksheetFunction.VLookup. Что за принцип? Sub asdf() Do While i <> 7 f = f + 1 Loop End Sub |
|
Если честно, то я не понимаю, что вы хотите. Может вы сами запутались в своих переменных и циклах? Смотрите приложенный файл. Там рабочий код. Никаких ошибок не выскакивает. Sub asdf() For i = 1 To 6 |
|
и в ВПР для поиска точного соответствия лучше использовать в 4-м аргументе «ЛОЖЬ», а не «ИСТИНА» |
|
широкарека Гость |
#10 29.08.2010 05:28:04 ошибка была в том, что если использовать Application.WorksheetFunction.VLookup, то возникающая ошибка, видимо не пишется в переменную/ячейку, а препятствует исполнению кода. Если использовать Application.VLookup, если получаем н/д, можем её отследить и поправить. + Отступ назначался абсолютным, а не относительным первой колонке диапазона, поэтому Н/Д вылезала всегда — глупая ошибка И, да, да, цикл был неправильный, пример делал второпях, простите. Так что такое WorksheetFunction, и почему такое воздействие оказывает на функцию? |
- Remove From My Forums
-
Question
-
0
Hi I’m new to this site and I’m asking a question that may already be answered. So if it has, I apologize but I could not find my answer. My question regards using dates in vba code specifically using dates in the vlookup function. Here is a sample of my
code and a question.Sub test()
Dim myvar2 As Double
Dim sdate As Variant
Dim myvar As Stringsdate = DateValue(«12/11/08»)
Worksheets(1).Activate ‘contains the lookup table 3 columns
Range(«AVGCLS»).Select
myvar = Selection.Address ‘this is a string variable containg lookup rangemyvar2 = Application.WorksheetFunction.VLookup(sdate, Worksheets(1).Range(myvar), 3)
End Sub
The code returns an error 1004 unable to get the Vlookup property of the WorksheetFunction class
However if I change the format of the first column from date to number (0 decimal places) and instead substitue the number 39793 for datevalue(«12/11/2008») then everything works fine. Obviously there’s a problem with the date/time format but what is it?
I’ve got a couple a work arounds for this but I’d still like to know why I can’t use the code and format of my lookup table as is.I’m teaching myself vba an using it to automate a lot of what my company does in EXCEL and it’s nice to be able to know the why not just the how.
Thanks in advance for your help.
Answers
-
-
Marked as answer by
Thursday, December 15, 2011 10:40 PM
-
Marked as answer by
eferey
New Member
- Joined
- May 25, 2003
- Messages
- 15
-
#1
Code:
Private Sub GetRoomPrice_Click()
Set PriceTable = Range("Prices")
If RoomNR.Text = "" Then GoTo e
RoomPrice = WorksheetFunction.VLookup(RoomNR.Text, PriceTable, 2)e:
End Sub
when i use this code in the button that is on my form i get the following error..
» Run-time error ‘1004’:
Unable to get the VLookup property of the Worksheetfuntion class
«
but the same row works for me fine in my other form, what seems to be the problem ?
Excel Facts
What is the fastest way to copy a formula?
If A2:A50000 contain data. Enter a formula in B2. Select B2. Double-click the Fill Handle and Excel will shoot the formula down to B50000.
-
#2
The VLOOKUP function returns the #N/A error value if it can’t find a match. This is fine on a worksheet, but VBA does not tolerate it and raises a 1004 error. So you need to trap it, eg:
Code:
Private Sub GetRoomPrice_Click()
Set PriceTable = Range("Prices")
If RoomNR.Text = "" Then GoTo e
On Error Resume Next
RoomPrice = WorksheetFunction.VLookup(RoomNR.Text, PriceTable, 2)
If Err <> 0 Then
RoomPrice = xlErrNA
End If
End Sub
Dr Zenith
New Member
- Joined
- Mar 14, 2011
- Messages
- 18
-
#3
Wow!! A 2003 thread helps me in 2011, thanks Andrew
Kosoleld
New Member
- Joined
- Mar 21, 2017
- Messages
- 1
-
#4
Hi guys,
Thought it would be worth a mention just to make this thread even more helpful.
I’m making macros for Germans and for some reason German people, in 2017, still use different separators to the rest of us i.e.
decimal COMMA
and
DOT for thousand separator
. They also have
SEMI COLON ; in formulas
on sheet level
instead of using COMMA
.
VBA always uses standard separators for both, i.e. decimal POINT (dot) and the thousand separator is COMMA. Formulas use COMMA. If you try to set the value of a cell to a string with the formula for a vlookup, cell.Value(or .formula) = «=VLOOKUP(A;B;C;D)» you will get error 1004. If you write this formula into the cell, you won’t get an error. The reason is that you need to set the cell formula or value using commas i.e. =»=VLOOKUP(A,B,D,C)». This will transfer over into the cell as «=VLOOKUP(A;B;C;D)».
Similar threads
Автор Daniel_James, 30 апреля 2016, 11:47
Daniel_James
- гость
- Записан
Здравствуйте. Необходимо произвести выборку по двум условиям (см. прикрепленный файл). На форме располагаются два Combobox. Задав нужные параметры в Combobox (данные берутся из excel) — в Label должно отобразиться нужно значение. При использовании функции VLookup возникает ошибка. Прошу помочь разобраться.
[вложение удалено администратором]
Администратор
- Administrator
- Сообщения: 2,206
- Записан
Ошибка вот здесь:
i = Application.WorksheetFunction.VLookup(sechenie, Sheet1.Range(«B3:E8»), 2, False)
В вашем файле нет «Sheet1».
Если вы хотите использовать vba-имя листа (которое отображается в VBA, в окне «Project — …»), то там у вас у листа имя «Лист1». В этом случае нужно так записать:
i = Application.WorksheetFunction.VLookup(sechenie, Лист1.Range(«B3:E8»), 2, False)
Если вы хотите использовать обычное имя листа, то тогда так:
i = Application.WorksheetFunction.VLookup(sechenie, Worksheets(«Лист1»).Range(«B3:E8»), 2, False)
Можно ещё обращаться к листу не по имени, а по порядковому номеру:
i = Application.WorksheetFunction.VLookup(sechenie, Worksheets(1).Range(«B3:E8»), 2, False)
Daniel_James
- гость
- Записан
Я внёс изменения согласно вашему ответу, но всё равно происходит ошибка:
Run-time 1004 Невозможно получить VLookup свойство класса WorksheetFunction
Администратор
- Administrator
- Сообщения: 2,206
- Записан
Здесь сразу два подводных камня:
- свойство «ComboBox.Text» возвращает дробные числа с точкой, хотя на мониторе мы видим запятую. Поэтому нужно заменить точку на запятую;
- после замены точки на запятую число всё ещё не будет числом как таковым, а будет иметь тип данных «String», а эксель-функция ВПР (в данном случае «VLookup») ведёт поиск с учётом типа данных. Поэтому нужно изменить тип данных «String» на «Double».
Таким образом, код будет такой:
Вариант 1
Private Sub CommandButton1_Click()
‘ Здесь у переменной «sechenie» тип данных «Double», что будет преобразовывать
‘ числа в виде текста в числа в виде чисел.
Dim sechenie As Double
Dim i As String
sechenie = Replace(UserForm1.ComboBox2.Text, «.», «,»)
i = Application.WorksheetFunction.VLookup(sechenie, Worksheets(«Лист1»).Range(«B3:E8»), 2, False)
UserForm1.Label3.Caption = i
End Sub
[свернуть]
Вариант 2
Вариант с использованием vba-функции «Val». Она извлекает из текстовой строки числа до первого символа, который не является числом. Можно использовать эту функцию в данном случае, т.к. эта функция работает с дробными числами, у которых разделитель точка. И функция «Val» возвращает число в типе «Double».
Private Sub CommandButton1_Click()
‘ Здесь у переменной «sechenie» тип данных «Double», что будет преобразовывать
‘ числа в виде текста в числа в виде чисел.
Dim sechenie As Double
Dim i As String
sechenie = Val(UserForm1.ComboBox2.Text)
i = Application.WorksheetFunction.VLookup(sechenie, Worksheets(«Лист1»).Range(«B3:E8»), 2, False)
UserForm1.Label3.Caption = i
End Sub
[свернуть]
Какой вариант лучше, не знаю. Пробуйте любой.
Daniel_James
- гость
- Записан
- Форум по VBA, Excel и Word
-
►
VBA, Excel -
►
VBA, макросы в Excel -
►
Excel VBA: Вопрос по функции VLookup
Using Excel worksheet functions taps into the native calculation engine: using Excel’s very own MATCH
function instead of writing a lookup loop or otherwise reinventing that wheel every time makes a lot of sense if your project is hosted in Excel in the first place, or if you’re otherwise referencing the Excel type library.
You may have seen it look like this:
Dim result As Variant result = Application.WorksheetFunction.Match(...)
Or like this:
Dim result As Variant result = Application.Match(...)
You’ve tested both, confirmed they both work, and might be using them interchangeably in code, and all is well… until it isn’t anymore and you’re facing a cryptic run-time error:
What could this nonsense possibly mean? First, we need to understand that we’re looking at a templated error message where “property” has to have been mistakenly made part of the templated string – because we’re really looking at a function member here, but even reading the message with the correct kind of member makes no sense… until we read it as simply “the worksheet function returned a worksheet error value“: if we typed that exact same invocation in an actual worksheet cell formula, Excel’s own error-handling would do the same, and the cell would contain an #N/A
error:
MATCH
or VLOOKUP
fails in a cell, that cell’s error value propagates to any caller/cell that references it. When you invoke these functions from VBA code, it’s into your VBA code that these errors propagate now.
Given bad arguments or a failed lookup, Application.WorksheetFunction.Match
and Application.Match
will behave very differently. Let us understand why and how. Note I’m going to be using a VLookup
function here, but Index
or Match
wouldn’t be any different, and everything here holds true for any other worksheet function, from the simplest Sum
to the most obscure financial function nobody ever used.
The two forms are not interchangeable, and it’s important to understand the difference!
Early Bound: Errors are Raised
When you invoke WorksheetFunction
members, errors are raised as VBA run-time errors. This means a failed lookup can be caught with an On Error
statement, as would any other run-time error.
On Error GoTo LookupFailed Debug.Print Application.WorksheetFunction.VLookup(...) Exit Sub LookupFailed: Debug.Print "..." Resume Next
When you type these member calls, you know you’re typing early-bound code because IntelliSense (its ancestor, anyway) is listing that member in an inline dropdown:
VLookup
is a member of the object returned by the WorksheetFunction
property of the Application
object.
The implication is that the function is assumed to “just work”: if using that same function with these same parameter values in an actual worksheet formula results in a #REF!
, #VALUE!
, #N/A
, #NAME?
, or any other Variant/Error
value… then the early-bound WorksheetFunction
equivalent raises run-time error 1004.
This VBA-like behavior is very useful when any failure of the worksheet function needs to be treated as a run-time error, for example when we are expecting the function to succeed every time and it failing would be a bug: throwing an error puts us on an early path to recovery.
Sometimes though, we don’t know what to expect, and a worksheet function returning an error is just one of the possible outcomes – using error handling in such cases would amount to using error handling for control flow, and that is a design smell: we should be using runtime errors for exceptional things that we’re not expecting. When a worksheet function can fail as part of normal execution, we have other options.
Late Bound: Errors are Values
When you invoke worksheet functions using late-bound member calls against an Excel.Application
object, when a function fails, it returns an error code.
Dim result As Variant result = Application.VLookup(...)
It’s important to understand that the Variant
type means nothing in particular until it gets a subtype at runtime; result
is a Variant/Empty
until the assignment succeeds – when it does result
might be a Variant/Double
if the value is numeric; if the lookup failed, instead of raising a run-time error result
will now be a Variant/Error
value.
Operations Involving Variant/Error: Removing Assumptions
Because a failed late-bound WorksheetFunction
returns an error value, it’s easy to forget the data type of the result might not be convertible to the declared type, so the first opportunity for things to go wrong materializes if we simply assume a non-error result by declaring a non-Variant
data type for the variable that is being assigned with the function’s result:
Dim result As Long 'assumes a successful lookup... result = Application.VLookup(...) 'runtime error 13 when lookup fails!
So we soon start systematically assigning these results to a Variant
:
Dim result As Variant result = Application.VLookup(...)
…only to find that all we did was moving the type mismatch error further down, here:
If result > 0 Then 'runtime error 13 when result is Variant/Error!
The first thing we should do with a Variant
, is to remove any assumptions about its content. The VBA.Information.IsError
function returns True
given a Variant/Error
, and we must use it to correctly remove assumptions about what’s in this result
variable:
Dim result As Variant result = Application.VLookup(...) If IsError(result) Then 'lookup failed Else 'lookup succeeded End If
Inside the lookup failed
conditional block, result
is a Variant/Error
value that can only be compared against another Variant/Error
value – involving result
in an operation with any other runtime type will throw a type mismatch error.
Using the VBA.Conversion.CVErr
function, we can convert a Long
integer into a Variant/Error
value; the Excel object model library includes named constants for each type of worksheet error, so we can use them with the CVErr
function to refine our knowledge of what’s in result
, if we need anything more detailed than “something went wrong”:
Dim result As Variant result = Application.VLookup(...) If IsError(result) Then 'lookup failed Select Case result Case CVErr(xlErrNA) 'result is a #N/A error: value wasn't found in the lookup range Case CVErr(xlErrRef) 'result is a #REF! error: is the lookup range badly defined? Case Else 'result is another type of error value End Select Else 'lookup succeeded End If
By systematically treating the result of a late-bound Application.{WorksheetFunction}
call as a potential Variant/Error
value, we avoid assuming success and handle a bad result without exposing our “happy path” to type mismatch errors; we then use If...Else...Then
standard control flow statements to branch execution differently depending on the outcome, using standard On Error
statements / error handling for the exceptional situations that could arise beyond these worksheet errors we’re already accounting for.
Other Variant/Error Pitfalls
The IsError
function isn’t just useful to determine whether a late-bound WorksheetFunction
call returned a usable value or not. The function returns True
given any Variant/Error
value, which makes it the perfect tool to identify worksheet cells that contain values that aren’t usable either.
Dim cell As Range Set cell = Sheet1.Range("A1") If cell.Value > 42 Then 'assumes cell.Value can be compared to 42! '... End If
VBA code often assumes cells contain valid values, and whenever that assumption is broken, a type mismatch error occurs. Unless the cell value was written by the same VBA code, it’s never really safe to assume a worksheet cell contains what the code expects it to contain. Using the IsError
function we remove such assumptions and make the code more resilient:
Dim cell As Range Set cell = Sheet1.Range("A1") If Not IsError(cell.Value) Then If cell.Value > 42 Then '... End If Else MsgBox cell.Address(External:=True) & " contains an unexpected value." End If
A Variant/Error
value can spell trouble in many other ways. Sometimes it’s an implicit conversion to String
that causes the type mismatch:
Dim cell As Range Set cell = Sheet1.Range("A1") MsgBox cell.Value 'assumes cell.Value can be converted to a String!
Implicit conversions can be hard to spot, but if your code is blowing up with a type mismatch error involving the value of a worksheet cell, or a value returned by a worksheet function, then that’s where you need to look.
-
04-25-2011, 08:17 AM
#1
I am trying to create a simple spreadsheet (see attached) with a form that the user would enter the Contributor Number and a Vlookup is performed on a range and when exiting the field would return the Contributor Name and Contributor Address into fields on the form. The code sets the range that is used in the Vlookup. When running this, I get an error: Runtime Error 1004: Unable to get the Vlookup property of the Worksheet Function class.
I have looked all over the web but cannot find a solution that works in this situation, so I am not sure where to go from here.
The code I am using is:
[VBA]
Private Sub ContributorNumber_Exit(ByVal Cancel As MSForms.ReturnBoolean)Dim myrange
Set myrange = Worksheets(«Contributors»).Range(«A1:B143»)ContributorName.Value = WorksheetFunction.VLookup(ContributorNumber.Value, myrange, 2, False)
If Err <> 0 Then
ContributorName.Value = «N/A»
End IfContributorAddress.Value = WorksheetFunction.VLookup(ContributorNumber.Value, myrange, 3, False)
If Err <> 0 Then
ContributorAddress.Value = «N/A»
End IfEnd Sub
[/VBA]
Does anyone have an idea why this code is not working ?
When I tried to debug the code, when I hovered over ContributorNumber.Value, it showed the proper value entered into the form and I used values for ContributorNumber that I knew were present in the range I set-up.
Any advice would be greatly appreciated ! I think it is probably something small I am overlooking but cannot find it.
thanks !
-
04-25-2011, 08:53 AM
#2
[vba]
Private Sub ContributorNumber_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim tmp As Variant
Dim myrange As Range
Set myrange = Worksheets(«Contributors»).Range(«A1:C143»)On Error Resume Next
tmp = Application.VLookup(Val(ContributorNumber.Text), myrange, 2, False)
If Not IsEmpty(tmp) ThenContributorName.Text = tmp
tmp = Emptytmp = WorksheetFunction.VLookup(Val(ContributorNumber.Text), myrange, 3, False)
If Not IsEmpty(tmp) ThenContributorAddress.Text = tmp
ElseContributorAddress.Text = «»
End If
ElseContributorName.Text = «»
End IfIf Err <> 0 Then
Unit.Value = «N/A»
End IfEnd Sub
[/vba]____________________________________________
Nihil simul inventum est et perfectumAbusus non tollit usum
Last night I dreamed of a small consolation enjoyed only by the blind: Nobody knows the trouble I’ve not seen!
James Thurber
-
04-25-2011, 09:45 AM
#3
thanks as always, XLD…..I tried the code and it worked and then I went back and tried to understand the logic. I am still new to coding and am still learning.
Why is it necessary to put VAL before the ContributorNumber.Text and why must the .Text be added ?
I suppose the .Value code would not work for some reason in this example ?
I do appreciate the help !
-
04-25-2011, 10:52 AM
#4
The Val is to change the textbox input, which is always text, into numbers as your data is numeric. I prefer Text to Value, it seems more logical. I am not sure if I tried .Value, so it might work as well.
____________________________________________
Nihil simul inventum est et perfectumAbusus non tollit usum
Last night I dreamed of a small consolation enjoyed only by the blind: Nobody knows the trouble I’ve not seen!
James Thurber
Формулы в Excel приводят к ошибке «Run-time error »1004»»
Смотрите также в каких-то случаях, значение «free» если ячеек With Sheets(SheetName).Range(«A1») строки по этим
For наизусть выучить. Их кроме кнопки и людей просто игнорируют. lr As Long 424 — Object правильном направлении!: Большое спасибо. ОбаSheets(«Задолженность»).Cells(9, 7).Value =Application.ScreenUpdating = False макросах я профан, End With EndNastinya
то да, нужно нету то iserr
.PasteSpecial Paste:=xlPasteFormulas ‘шапка листам.Next i не так много.
код к этой Это не связано Application.ScreenUpdating = False required. в строке
korsar75 метода работают. Если Sheets(«Договор, акт»).Cells(18, 11).ValueDim wsSh As поэтому объясните что Sub: Добрый день. никак обрабатывать ошибку. Но — вернет true. содержит формулы, которыеМакрос запускается поRange(«count»).Value = 0 Без файла с кнопки пока выглядит с ленью или Set shSource = If Not Intersect(cell,: Большое спасибо. Будем
не сложно, тоSheets(«Задолженность»).Cells(9, 8).Value = Worksheet
дает данная командаПрим.: не могу разобраться,
некоторые функции рабочего
PS знаю что
тоже копируются .PasteSpecial кнопке (взята изApplication.DisplayAlerts = True проблемой разговор неочем. точно так же, не желанием. Это Worksheets(«Ввод результатов испытаний») [C11], [C62:C65] дальше грызть гранит в двух словах Sheets(«Договор, акт»).Cells(16, 11).ValueFor Each wsSh «CStr» для дальнейшегоиспользуется
потерялась в двух листа не возвращают есть куча способов
Paste:=xlPasteFormats .PasteSpecial Paste:=xlPasteColumnWidths «элементов управления формы»).
Application.ScreenUpdating = True Может у Вас как я выложил связанно с избыточным Set shTarget =Private Sub Worksheet_Change(ByVal науки в чем мояEnd Sub In Me.Sheets понимания и использованияIndex строках. ошибки, например СЧЕТЕСЛИ, это сделать, но End With WithНа моей машине
End Sub
в Range(«B3»).Select буква в изображении. То количеством правил. На Worksheets(«данные») lr = Target As Range)max_2311 ошибка или пошлите
PelenaIf wsSh.Name <>LVLлиста, но можноAdr = Worksheets(NameStel).Cells(Stroka поэтому для таких хочу понять что
CyberForum.ru
Макрос, ошибка 1004
Application .ScreenUpdating = в версии 2007собственно, нужно, чтобы B не латинская, есть все что каждом сайте свои shTarget.Columns(«A»).Find(What:=»*», LookIn:=xlFormulas, LookAt:= Application.DisplayAlerts = False: Извините, но ошибка куда-нибудь, где про: «Прочее» And wsSh.Name: Это не команда, вместо + 6, i).Address(RowAbsolute:=False,ColumnAbsolute:=False,External:=True) функций не нужна не так именно False: .CutCopyMode =
всё работает, на при обращении к а кириллическая? есть в изображении правила и тонкости, _ xlPart, SearchOrder:=xlByRows,
For Each cell опять проявилась. В это написано :-)Тагир
<> «Цель кредита» а функция. ОнаIndex Sheets(«данные»).Range(«E3»).Formula = «=» обработка ошибок. с данным вариантом. False End WithМожет машине начальника в несуществующей странице кодKimezz (если не считать а их миллионы.
SearchDirection:=xlPrevious, MatchCase:=False _ In Target If коде выделяется .Value=Now
(но лучше с, оформите код тегами
Then приводит выражение киспользовать имя - & Adrв первойxlankasterxБольшое спасибо! в самой кнопке версии 2013 при игнорировал ошибку и,
: коллеги, добрый день, одной кнопки на Жизни не хватит, , SearchFormat:=False).Row + Not Intersect(cell, [C11],
Подскажи где ошибка конкрентным указанием книжки с помощью кнопкиwsSh.EnableOutlining = True типу String1 строчке получаю адрес: Последний вопрос иSuperCat есть какая-нибудь особенность?
запуске из Microsoft увеличив счетчик, переходилстолкнулся с проблемой, странице) является и
planetaexcel.ru
Макрос выдаёт ошибку 1004 (Макросы/Sub)
чтобы все правила 1 shSource.Range(«D1:D83»).Copy ‘shTarget.Cells(lr, [C62:C65]) Is Nothing в коде?
или статьи)
# в режиме
DO_ = TrueИрина
заменяем на ячейки с одного
тема закрыта):: А причём тутHugo
Visual Basic тоже к следующей дате гугл не очень
так 100% всей
перечитать. А помимо "A").PasteSpecial Paste:=xlPasteAll, Transpose:=True Then ' End
Private Sub Worksheet_Change(ByValSergei_A правки поста
If wsSh.Name =
: Ну теперь все
"данные" листа и затемOn Error Resume
IsErr и проверка
: Были глюки с
работает, а при
(дата, и вслед
помог, надеюсь на
информации? Может вам правил на сайтах shTarget.Cells(lr, «A»).PasteSpecial Paste:=xlPasteValues,
If Next cell Target As Range): ДержитеТагир «Консолидация» Then DO_ понятно, а то.Всем большое спасибо.
этот адрес надо Next ячейки на значение?
этими кнопками после запуске через кнопку
за ней адрес вас. еще весь жесткий
в жизни нас
Transpose:=True Application.CutCopyMode =
Application.DisplayAlerts = TrueEnd
Application.DisplayAlerts = FalseВ двух словах
: Добрый день!!! = False
очень тяжело когдапомогло: вставить в формулуvar = Application.WorksheetFunction.Search("free",
В ячейке может
некоторых обновлений, обсуждалось.
с листа выдаёт ссылки, меняется взадача: на сайте
диск на 2Тб окружают еще миллионы False Application.ScreenUpdating =
Sub
For Each cell
- Вы через
Кто может помочь
wsSh.Protect Password:="0000", DrawingObjects:=DO_,
не знаешь дасначала сформировала скобочки на другом листе. Cells(2, 1), 1) быть ошибка? Я бы вместо ошибку «1004 Application-defined экселе при изменении публикуются данные раз отправить, чтоб вам правил, расписывающих чуть
True MsgBox «Сделано»
Ранее использовался код, In Target IfSet ArtikulRange = в устранении ошибки,
Contents:=True, Scenarios:=True, UserinterfaceOnly:=True, еще и забудешь! в ячейке, затем вот в такомOn Error GoToKarataev кнопки использовал любой
excelworld.ru
Как исправить ошибку «Run-time error ‘1004’ (Формулы/Formulas)
or object-defined error» значения счетчика). в день в легче было разобраться ли не каждый End Sub но время не
Not Intersect(cell, Range(«C11, Selection в экселе никогда AllowFormattingRows:=True, AllowFiltering:=True
Что бы мы добавила к ним виде все нормально 0: С помощью «worksheetfunction.iserr»
рисунок (например изКопирование строки выполняется
спасибо!
экселе, при этом
в 4 строчках?
наш шаг: религия,
Юрий М менялось.
C61:C64″ [IMG WIDTH=16Создали объект содержащий
не программировал, разбиратьсяEnd If
олухи без Вас OR. — не
работает.в чем разница
нельзя перехватить ошибку. автофигур).
так:_Boroda_
нормального доступа ко
putevod тысячи федеральных законов,: Код следует оформлятьPrivate Sub Worksheet_Change(ByVal HEIGHT=16]http://www.planetaexcel.ru/bitrix/images/forum/smile/icon_wink.gif[/IMG] ) Is выделенный диапазон, и с нуля сложно
Next wsSh и вашего форума
сработало. затем поменялано нужно получить между первой и Ошибку можно такА по тойApplication.ScreenUpdating = False
: Проверяйте файл на всей базе данных: Юрий М, Спасибо! этикет, нормы расписанные соответствующим тегом: ищите Target As Range) Nothing Then With потом этот объект .Application.ScreenUpdating = True
делали… Спасибо разъяснение. на Local. - формулу ИЛИ. третьей строчкой? перехватить: строке — Sheets(ActSheetName).Range(Cells(R, ‘Эту структуру я наличие так
нет. Оба способа не для работ (ГОСТы,
такую кнопку и Application.DisplayAlerts = False cell.Offset(0, 3) [COLOR=#ff0000] пишите как адресОсобенность заключается в
Application.CellDragAndDrop = FalseЮрий М и… УРАА!!Sheets(«данные»).Range(«E3»).Formula = «=OR(«Karataev
Sub Macro() Dim 41), Cells(R, 49)).Copyтам взял с какого-то
excelworld.ru
Ошибка run-time error ‘1004’ в коде
if dir(ПолныйПутьСИменемИРасширением)<>»» thenрешил выкачать все
вызывают ошибки и СНиПы, ПБУ и
исправьте своё сообщение. For Each cell .Value = Now — Range(ArtikulRange) том, что данныеEnd Sub: В редакторе становимсяхотя пробовала все & Adrсразу вылетает: On Error Resume lngVar As Long
не указано чьи форума, не очень
Kimezz файлы и слить
выполняют то, что
их огромное количество),
P.S. Код копируйте
In Target If [/COLOR] End Withkorsar75 договора заполняются вНа всякий случай курсором на CStr те же действия ошибка «Run-time error Next — при On Error Resume ячейки, уже привычная понимаю зачем нужна.
: _Boroda_, спасибо. к воедино. первый шаг
я хотел! правила пользования техникой,
при русской раскладке Not Intersect(cell, [C11],
End If Next: А можно пропустить закладке «Договор,акт» - (вдруг кто не и жмём F1
в обратном порядке »1004»» ошибке продолжить далее.
Next lngVar = ошибка, аж надоело… Sheets(ActSheetName).Range(Cells(R, 41), Cells(R, сожалению, не сработало: — выкачать файлы,Юрий М безопасность, ПДД, расписание клавиатуры — тогда [C62:C65]) Is Nothing cell Application.DisplayAlerts = эти шаги: печатается файл, потом в курсе) предупрежу,Almost — поставить localкак уже только Здесь и так Application.WorksheetFunction.Search(«free», Cells(2, 1),Если код в 49)).Copy ‘В листе воткнул которые называются однотипно.: Не нужен весь дня (тоже извините не будет вот Then ‘ Cell.Offset(0, True End SubWorksheets(«Raschet».Activate Worksheets(«Raschet».Range(«A1».Activate Worksheets(«Raschet».Range(ActiveCell, необходимо сохранить данные что последняя строчка: Во вложении файл
и формировать формулу не извращалась с все понятно. 1) On Error стандартном модуле - с именем ActSheetName(переменная)If Dir(address) <> «» выходные дни игнорирую диск. И рабочий меня является правилом, таких символов: «Ñäåëàíî» 3) = NowSanja
ActiveCell.End(xlDown)).Select Set ArtikulRange договора в закладке
макроса отключает маркер с макросом на
здесь же - этим адресом, ничегоOn Error GoTo GoTo 0 If вроде должно прокатить.
выделяем для копирования Then на уровне алгоритма, файл не нужен.
не следуя которому Прикрепленные файлы Тег End If Next: Зачем там вообще
= SelectionТ.е. можно задолженность, виде строки.
заполнения/перетаскивания. Кто уже открытие книги. Код: не работало… не получается.. 0 — при lngVar = 0 А вот если ячейки с 41перед исполнением - но праздничные и Помощь нужна кому можно нахлопотать себе VBA.jpg (19.2 КБ) cell Application.DisplayAlerts = конструкция With…End With?
ли выделить и Если не трудно запустил макрос из
200?’200px’:»+(this.scrollHeight+5)+’px’);»>Private Sub Workbook_Open()Ирина
alex_gearbox ошибке перейти в Then ‘нет искомых в модуле листа по 49 в он не понимает
иные исключения так
— Вам? Так проблем), а сколько
putevod TrueEnd SubСell.Offset(0, 3) =
одновременно удалить дубликаты. помогите. первого поста -
Application.ScreenUpdating = False: Здравствуйте, написан маленький: Попробуйте проверить Какой
ноль. Эта строка данных End If — могут быть строке с номером адрес в интернете не обойти - помогите помогающим: не договоров за всю: Что я неSanja Now Или не выделять,Pelena запустите отдельно вотDim wsSh As
макрос для вставки вид у вас
отключает перехватчик ошибок. End Sub ошибки. R With Sheets(SheetName).Cells(RN,
как путь к идёт ссылка на должны они тратить
жизнь (работа, кредиты), так делаю? Прикрепленные
: А это пробовали?max_2311 а задать диапазон: это и все Object
текста с одного «A1» или «RC» Что означает «GoToИли ошибку можноalexthegreat 1) ‘как работает файлу, пишет «bad несуществующий файл. понапихал своё время, чтобы а сколько пользовательских файлы 1.jpg (40.38
If Not Intersect(сell,: В написании кода и удалить из
Тагир станет на местоFor Each wsSh листа на другой сейчас не вспомню 0″, мне не вообще не вызывать,: скорее всего какое With…End With тоже file name or в текст кода рисовать таблицу с
соглашений при установке КБ)
Union([C11], [C62:C65])) Is еще не силен, него дубликаты. Причем
, то, что приложилиКод200?’200px’:»+(this.scrollHeight+5)+’px’);»>Application.CellDragAndDrop = True In Me.Sheets при выполнении двух
навскидку, ну шибко известно. Вообще, GoTo сделав предварительную проверку. то обновление или не очень представляю. number». On Error Goto данными. Вот к программ или регистрацийЮрий М Nothing Then поэтому за основу известно только место
файл — хорошо,Да, и действительно
If wsSh.Name = условий, но при
намучился в поиске 0 означает «перейти Если проверка показывает, у шефа или Копируем в лист
sboy
и т.п. -
чему Вас призывают.
почт или других
: Попробуйте так: ActiveSheet.Range(«B3»).SelectАmax_2311 взял, что было начала диапазона, а осталось в первом — Worksheet. Поправил «Прочее» Then GoTo колличестве знаков в
ошибки. оказалось что в строку с что есть искомые у вас не SheetName(тоже переменная) в: Добрый день. не сработало. Цитатаputevod написал: услуг, ну а вообще, чтобы копировать,: Также возникает ошибка в интернете. сколько в нем посте оформить код у себя, сразу b ячейке более 300 какаието функции не меткой 0″. Это данные, то применить легло, и кнопка
строку RN .PasteSpecialВот так попробуйтекод ниже, документвы мне предлагаете такие понятия, что
выделять необязательно: в строке IfЗа подсказку спасибо. ячеек неизвестно, но тегами не заметил.If wsSh.Name =
выдается ошибка. Разбивать воспринимают формат RC. наверное осталось от «WorksheetFunction.Search»: наверняка активХ. Если
Paste:=xlPasteValues .PasteSpecial Paste:=xlPasteFormatsOn Error Resume Next — в приложении. еще и читать
если ты мужик,Private Sub CommandButton1_Click() Not.
Sanja известно точно, чтоHugoAlmost «Цель кредита» Then на несколько ячеек, Только A1 понимают,
предыдущих версий VBA,Sub Macro() Dim сам код рабочий, End With WithWorkbooks.Open Filename:=addressSub test() какие-то правила?Да, предлагаем. то должен что-то Range(«C8»).Copy Sheets(«Result»).Range(«B3») EndPrivate Sub Worksheet_Change(ByVal: И еще. в нем нет: Доступно только для: Спасибо, идеально! Заодно GoTo b а потом собирать я по переменной где это имело lngVar As Long сделайте новую кнопку Application ‘эти триIf Err ThenDim address, name Не будете их сделать — тоже Sub Target As Range)If Not Intersect(сell, пустых ячеек. Как пользователей добавил предложенную строчкуwsSh.EnableOutlining = True обратно текст очень им адрес передавал. смысл, а в If WorksheetFunction.CountIf(Cells(2, 1), и назначте ей строки из тогоErr.Clear As String соблюдать — помощь набор правил, которыеHugo Application.DisplayAlerts = False Union([C11], [C62:C65])) Is вариант можно черезPelena для восстановления перетаскиванияIf wsSh.Name = проблемно. Сократить колличество Если не получится новых версиях VBA «free») <> 0 макрос. кнопку сделайте же примера сOn Error GoToDim count, c_max, или затянется или если не соблюдать,: Не следуете правилам For Each cell Nothing Thenили именованный диапазон, что,: Да я перенесла в свой файл «Консолидация» Then GoTo знаков возможности нет, попробуйте свойсто В уже смысл не Then lngVar = из фигуры. Вставка-фигуры форума. Наверно они 0 i As Integer вообще её не то можно лишиться форума — не In Target ‘If Not Intersect(сell, в принципе, я тему в VBA, на событие закрытия a придумано не мной. разных ипостасях - понятен. Application.WorksheetFunction.Search(«free», Cells(2, 1),Ktotolya нужны, с нимиElseOn Error GoTo получите. Неужели это поддержки общества и показываете файл. Т.е. If Not Intersect(Cell, [C11], [C62:C65]) Is и делал в а подзаголовок остался книги.wsSh.Protect Password:=»0000″, DrawingObjects:=True, Подскажите как обойти Локальный адрес иxlankasterx 1) End If: Спасибо. Попробую и проблем нет, какActiveWindow.Visible = True EndIteration так трудно понять?Цитатаputevod снизить качество своих не показываете всю Union([C11], [C62:C65])) Is Nothing Then макросе. Так же от формулТагир Contents:=True, Scenarios:=True, UserinterfaceOnly:=True, ограничение. Пример приложен. т.д: Спасибо всем большое! If lngVar = фигуру использовать и вроде бы иActiveWorkbook.SaveAs Filename:= _
Application.ScreenUpdating = False написал: социальных отношений. И информацию, которая нужна Nothing Then ‘max_2311
именованный диапазон можноmaster-dd: Ошибку дает когда AllowFormattingRows:=True, AllowFiltering:=TrueZNastinya Вопросов больше нет. 0 Then ‘нет указать, чьи ячейки. без них. .ScreenUpdating»C:UsersGalachyanKGDesktopПроектыDiesel» & name,Application.DisplayAlerts = Falseэти правила не
это далеко не для решения вопроса. C11, C62:C65 Cell.Offset(0,: Исправил код и задать на листе: вношу изменения вGoTo b: Как вариант: работать: Sheets(«данные»).Range(«E3»).Formula поменяйте на
SuperCat искомых данных End Вот так лучше? = False: .CutCopyMode _count = 0 были явно навязаны полный набор. Прошу
putevod 3) = Now возникла ошибка 424
заранее и обращатьсяУдалено администрацией — автор закладке «Договор, акт»a:
в новом формате FormulaLocal. Может поможет.: Из книги «Excel If End Sub
Sheets(ActSheetName).Range(Sheets(ActSheetName).Cells(R, 41), Sheets(ActSheetName).Cells(R, = False EndFileFormat:=xlExcel8, Password:=»», WriteResPassword:=»»,c_max = Range(«max_count»).Value мне перед тем,
прощения, что не: Здравствуйте! Наверное Вы End If NextPrivate Sub Worksheet_Change(ByVal уже к нему не исправил замечание и вызываю процедуруwsSh.Protect Password:=»0000″, DrawingObjects:=False, — *.xlsm (XLЕсли русский оффис. 2007 VBA Programmer’sxlankasterx 49)).Copy WithОшибка ссылается на
planetaexcel.ru
игнорирование ошибки 1004 в итеративном макросе (Макросы/Sub)
_For i =
как отправить вопрос прочитал ваших правил, думаете, что я cell Application.DisplayAlerts =
Target As Range) из макроса. Или модератора Копирования данных в Contents:=True, Scenarios:=True, UserinterfaceOnly:=True, -2007, 2010, 2013) то функция OR
Reference»:ЦитатаOn Error GoTo: функция search ищетHugo строку Sheets(ActSheetName).Range(Cells(R, 41),ReadOnlyRecommended:=False, CreateBackup:=False 0 To c_max на сайтНе совсем сэкономив N-ное кол-во абсолютно все время True End Sub Application.DisplayAlerts = False циклом перебором определитьПоследнее китайское предупреждение закладке «Задолженность». AllowFormattingRows:=True, AllowAutoFiltering:=True …
— Локализованная. 0 is used
текст "free" если
: Можно лучше Cells(R, 49)).CopyЯ раньше
ActiveWindow.CloseRange("count").Value = count
так: См. вторую времени. Но так
провожу перед компьютером?
AlexLin
For Each cell
границы диапазона. Но
- прочитайте ПравилаПриходится сохранять, закрывать
b:
ps 1049 знаков
из Хелпа :
to turn on
текста в ячейке
with Sheets(ActSheetName) .Range(.Cells(R,
с 2013 неEnd If
address = Range("D_address").Value тему на первой
как эти правила
Это совершенно не
: Добрый день!
In Target 'проходим циклом одназначно долго,
форума
файл и потомNext wsSh
в ячейке -ИЛИ(логическое_значение1;логическое_значение2; ...)
normal VBA error-handling нет то iserr
41), .Cells(R, 49)).Copy
работал, да иupd. поправил, перевложилname = Range("F_name").Value
странице: ЦитатаВажно, Закрыто:
не были явно
так! На самом
Подскажите почему вылетает
по всем измененным
т.к. строк будетkorsar75 копирование проходит успешноApplication.ScreenUpdating = True это не по-XL’евски,Логическое_значение1, логическое_значение2, … again. Otherwise, any (как я думаю) end with вообще имею неKimezz
Workbooks.Open Filename:=address
Обязательно к прочтению навязаны мне перед деле у меня
такая ошибка
ячейкам If Not под сотню тысяч.: Добрый день (((Application.CellDragAndDrop = False однако...
— от 1 further errors would вернет значение truexlankasterx богатый опыт написания: sboy, большое спасибо,ActiveWindow.Visible = True
перед созданием новой тем, как отправить
дел так много,
и эта ошибка
Intersect(cell, Range("C11, C62:C65"
И еще приходит
Подскажите почему вылетает
Просто часто приходитсяEnd Sub
Ирина
до 30 проверяемых
be ignored. It
то есть ошибка.: Привет всем!
макросов. Может быть, теперь работает корректно,
ActiveWorkbook.SaveAs Filename:= _
темыДумаю, вопрос исчерпан.
вопрос на сайт,
что компьютеру буквально
только у меня ) Is Nothing на ум такой такая ошибка переходить из одной
Выдаёт ошибку 1004: ну так, некоторым
excelworld.ru
Ошибка 1004 Application-defined or object-defined error возникает на другом компьютере в другой версии Excel
условий, которые могут is best not На раб листеформулаПросьба помочь выяснить дело в том, возьму прием на»C:UsersGalachyanKGDesktopПроектыDiesel» & name,Hugo я имел право по минутам вырываю на ПК выходит,
Then ‘если изменененная вариант (это вRun-time error ‘1004’ закладки в другую. на строке после это не объяснить, иметь значение либо
to try to такая: еош(ПОИСК(«FREE»;A1;1)), вот что не так
что лист, с вооружение. _: Вижу что времени считать их не кусочки времени. Дом, на др этот ячейка попадает в плане обучения) что Application-defined or object-defined Прошу помочь , a:
задачу нарезали-нужно исполнять, ИСТИНА, либо ЛОЖЬ…..
interpret this statement, эту формулу я в следующем коде которого идёт копированиевопрос исчерпан, темуFileFormat:=xlExcel8, Password:=»», WriteResPassword:=»», сидеть за компом обязательными, иначе бы семья, работа, друзья, файл без ошибок. диапазон C11, C62:C65 через Count определить error Вот код если не трудноПодскажите, пожалуйста, в вот и мучаюсь,1. which appears to и пытаюсь задействовать макроса: большой (41-49 столбцы можно закрывать. _ нет их не соблюдение шабашки, какие-то проблемыЕсли напишу End If Next кол-во ячеек и (ошибка возникает вPublic Sub Моя чём причина. Задача: разбивала на несколькопрограммно сформировать в be directing errorhandling в VBA. ПричемMsgBox worksheetfunction.iserr(Application.WorksheetFunction.Search(«free»,Cells(2, 1), копируются или AO-AW)KtotolyaReadOnlyRecommended:=False, CreateBackup:=FalseДобавьте к 100 должно было привести от ЖКХ, социальныеWorksheets(«Raschet»).Range(ArtikulRange.Address).RemoveDuplicates Columns:=1, Header:=xlNo cell Application.DisplayAlerts = потом задать адрес строке подсвеченной красным): процедура() заблокировать все листы
ячеек текст, при ячейке to line 0. в ячейке cells(1,2) 1) )= 0 и используются разделители: Здравствуйте. Писал макросActiveWindow.Close ещё 1% информации не возможности задать всякие нюансы, вплотьили True End Sub как А1:А-count+1 (надеюсь Public Sub PodschetProdaz()Rows(«6:7»).Select кроме двух, а собирании обратно, оченьЕ3 Just accept that текст «fort». И
с cells(1,1) - или что-то такое, для начальника. УEndIteration: — где именно вопрос, так как до того, чтоArtikulRange.RemoveDuplicates Columns:=1, Header:=xlNo
Sanja понятно написал). А Worksheets(«Raschet»).Activate Worksheets(«Raschet»).Range(«A1»).Activate Worksheets(«Raschet»).Range(ActiveCell,Selection.Copy на одном из тяжело читать и
вид, заключённый в it works. еошибка возвращает true. стоит значение adadfree что позволяет как меня работает(Excel 2007),count = count
расположен код? система бы не нередко забываю дажекак вверху советовали,: См. пост #12 еще есть Used, ActiveCell.End(xlDown)).Select Set ArtikulRangeRows(«9:9»).Select заблокированных оставить возможность проверять, потому как круглые скобки, нужнойkuklp
А в vba — тут ошибки бы свернуть несколько а у него + 1Я на 99% пропустила его в
сделать что-то важное. то поможет? ИЮрий М но я пока = Selection [COLOR=#FF0000]Worksheets(«Raschet»).Range(ArtikulRange).RemoveDuplicates
planetaexcel.ru
Ошибка 1004 при использовании функций рабочего листа в макросе
Selection.Insert Shift:=xlDown редактирования объектов
около 5 тыс. формулы, но без: Sub Macro() Dim аналогичная формула вызывает
не происходит столбцов?
(Excel 2013) естьRange(«count»).Value = count уверен что знаю виду не выполнения
У меня нет где лучше писать: max_2311, коды следует
не понял как
Columns:=1, Header:=xlNo[/COLOR] EndSheets(«Задолженность»).Cells(9, 2).Value =Pelena
строк оператора, т.е.: lngVar As Long ошибку 1004.при переходе кПричём выше по
проблема. А чтобыIf Range(«w_day»).Value = причину ошибки - правил. И!!! Что времени ни посмотреть между Sub uuu()
оформлять тегом. Исправляйте
его применять :-( Sub Sheets(«Договор, акт»).Cells(15, 84).Value: ЗаменитеКазанскийв ячейке
On Error Resumexlankasterx cells(1,2) — с коду есть аналогичная всё пробовать и
6 Then но всёж есть я вам не телевизор, ни пообщаться и End Sub свои сообщения.RANТак же файлSheets(«Задолженность»).Cells(9, 3).Value =200?’200px’:»+(this.scrollHeight+5)+’px’);»>Dim wsSh As Object: Все просто, работает
Е3 Next lngVar =: Полчучается, что при содержание fort структура, которая копирует так и эдакcount = count
ещё 1%… выложил то, я в соцсетях, ни в любом месте?max_2311: Нужно! примера Sheets(«Договор, акт»).Cells(6, 90).Valueна Код200?’200px’:»+(this.scrollHeight+5)+’px’);»>Dim wsSh и в 2000видим: (А1>5)
Application.WorksheetFunction.Search(«free», Cells(2, 1), использовании функций рабочеговылетает ошибка 1004. шапку таблицы в на его компе + 2Sanja так и не даже новости почитать. Прикрепленные файлы Безымянный.png: Исправил. Спасибо заWorksheets(«Raschet»).Range(Range(«A1″), Range(A1»).End(xlDown)).RemoveDuplicates Columns:=1,Sergei_ASheets(«Задолженность»).Cells(9, 4).Value = As WorksheetSheets(«свод»).Cells(k, 10) =2. 1) If Err листа в макросах
Поэтому разъясните пожалуйста, другие листы, и нет времени.c_max = c_max: За то время, понял? Какой файл
А вы мне (8.86 КБ) подсказку. Header:=xlNo: наипишите или Sheets(«Договор, акт»).Cells(6, 32).Value_Boroda_ CStr(Sheets(«Лист2»).Cells(i, 5))запускаем след. макрос: Then Err.Clear: MsgBox обязательно надо заморачиваться что я не
она работает безМакрос осуществляет поиск — 2
которое было потрачено вам нужен? Сам
предлагаете еще иAlexLin
max_2311Sergei_A
Worksheets(«Raschet»).Range(ArtikulRange.Address).RemoveDuplicates Columns:=1, Header:=xlNoSheets(«Задолженность»).Cells(9, 5).Value =: Goto — это
ИринаSub primer() With «Not found» On с перехватом ошибок? так делаю? ошибок: Application.ScreenUpdating =
строк по некоторомуEnd If на сочинение и XLSM? Так он читать какие-то правила?: Sub uuu() Dim: Добрый день.:или Sheets(«Договор, акт»).Cells(2, 11).Value не по феншую.: Супер!!!! Все отлично Sheets(1) r_E3 = Error GoTo 0KarataevПо смыслу макрос False Sheets(ActSheetName).Range(«AO1:AW5»).Copy ‘шапка столбцу, создаёт несколько
If i >= набор этого текста, пустой и в
Да 90% всех shSource As Worksheet,Сегодня заметил, чтоkorsar75,ArtikulRange.RemoveDuplicates Columns:=1, Header:=xlNoSheets(«Задолженность»).Cells(9, 6).Value =Попробуйте вот так сработало, огромное спасибо .Range(«E3»).Value .Range(«E3») = ‘ resume code: Если функция рабочего должен проверить есть статична, поэтому обращаюсь листов и распределяет, c_max Then Exit Правила можно было нем нет ничего правил 99% всех
shTarget As Worksheet, код выдает ошибкуВы двигаетесь вkorsar75 Sheets(«Договор, акт»).Cells(15, 11).Value200?’200px’:»+(this.scrollHeight+5)+’px’);»>Private Sub Workbook_Open() за помощь. в «=OR» & r_E3 End Sub листа возвращает ошибку ли в ячейке непосредственно по именам
planetaexcel.ru
то есть копирует