Страницы: 1 2 След.
RSS
[ Закрыто ] Ошибка run-time error '1004' в коде
 
Добрый день
Подскажите почему вылетает такая ошибка
Код
Run-time error '1004'
Application-defined or object-defined error

Вот код (ошибка возникает в строке подсвеченной красным):

Public Sub PodschetProdaz()
 Worksheets("Raschet").Activate
 Worksheets("Raschet").Range("A1").Activate
 Worksheets("Raschet").Range(ActiveCell, ActiveCell.End(xlDown)).Select
 Set ArtikulRange = Selection
 [COLOR=#FF0000]Worksheets("Raschet").Range(ArtikulRange).RemoveDuplicates Columns:=1, Header:=xlNo[/COLOR]
End Sub

Так же файл примера
Изменено: korsar75 - 11.04.2014 17:25:33
 
наипишите или
Код
Worksheets("Raschet").Range(ArtikulRange.Address).RemoveDuplicates Columns:=1, Header:=xlNo 

или
Код
ArtikulRange.RemoveDuplicates Columns:=1, Header:=xlNo 
 
Большое спасибо. Оба метода работают. Если не сложно, то в двух словах в чем моя ошибка или пошлите куда-нибудь, где про это написано :-) (но лучше с конкрентным указанием книжки или статьи)
Изменено: korsar75 - 28.01.2013 18:07:11
 
Держите ссылку

В двух словах - Вы через
Set ArtikulRange = Selection
Создали объект содержащий выделенный диапазон, и потом этот объект пишите как адрес - Range(ArtikulRange)
 
А можно пропустить эти шаги:
Код
Worksheets("Raschet".Activate 
 Worksheets("Raschet".Range("A1".Activate 
 Worksheets("Raschet".Range(ActiveCell, ActiveCell.End(xlDown)).Select 
 Set ArtikulRange = Selection
Т.е. можно ли выделить и одновременно удалить дубликаты. Или не выделять, а задать диапазон и удалить из него дубликаты. Причем известно только место начала диапазона, а сколько в нем ячеек неизвестно, но известно точно, что в нем нет пустых ячеек. Как вариант можно через именованный диапазон, что, в принципе, я и делал в макросе. Так же именованный диапазон можно задать на листе заранее и обращаться уже к нему из макроса. Или циклом перебором определить границы диапазона. Но циклом одназначно долго, т.к. строк будет под сотню тысяч.
И еще приходит на ум такой вариант (это в плане обучения) что через Count определить кол-во ячеек и потом задать адрес как А1:А-count+1 (надеюсь понятно написал). А еще есть Used, но я пока не понял как его применять :-(
 
Цитата
korsar75 пишет: А можно пропустить эти шаги:
Нужно!
Код
Worksheets("Raschet").Range(Range("A1"), Range(A1").End(xlDown)).RemoveDuplicates Columns:=1, Header:=xlNo
Изменено: RAN - 15.04.2014 16:21:43
 
korsar75,  Вы двигаетесь в правильном направлении!  :)
 
Большое спасибо. Будем дальше грызть гранит науки
 
Извините, но ошибка опять проявилась. В коде выделяется .Value=Now
Подскажи где ошибка в коде?
Код
Private Sub Worksheet_Change(ByVal Target As Range) 
 Application.DisplayAlerts = False 
 For Each cell In Target 
    If Not Intersect(cell, Range("C11, C61:C64" [IMG WIDTH=16 HEIGHT=16]http://www.planetaexcel.ru/bitrix/images/forum/smile/icon_wink.gif[/IMG] ) Is Nothing Then 
      With cell.Offset(0, 3)    
      [COLOR=#ff0000] .Value = Now [/COLOR]
       End With 
    End If 
 Next cell 
 Application.DisplayAlerts = True 
End Sub
Изменено: max_2311 - 12.04.2014 11:53:52
 
Зачем там вообще конструкция With...End With?
Код
Сell.Offset(0, 3) = Now  
Изменено: Sanja - 11.04.2014 18:03:04
Согласие есть продукт при полном непротивлении сторон
 
В написании кода еще не силен, поэтому за основу взял, что было в интернете.
За подсказку спасибо.
 
И еще.
Код
If Not Intersect(сell, Union([C11], [C62:C65])) Is Nothing Then
или
Код
If Not Intersect(сell, [C11], [C62:C65]) Is Nothing Then
Изменено: Sanja - 11.04.2014 18:21:07
Согласие есть продукт при полном непротивлении сторон
 
Исправил код и возникла ошибка 424


Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.DisplayAlerts = False
    For Each cell In Target   'проходим по всем измененным ячейкам
    If Not Intersect(cell, Range("C11, C62:C65"    ) Is Nothing Then 'если изменененная ячейка попадает в диапазон C11, C62:C65
      
    End If
    Next cell
    Application.DisplayAlerts = True
End Sub
Изменено: max_2311 - 11.04.2014 23:20:49
 
См. пост #12
Согласие есть продукт при полном непротивлении сторон
 
max_2311, коды следует оформлять тегом. Исправляйте свои сообщения.
 
Исправил. Спасибо за подсказку.
 
Добрый день.
Сегодня заметил, что код выдает ошибку 424 - Object required. в строке If Not Intersect(cell, [C11], [C62:C65]

Код
Private Sub Worksheet_Change(ByVal Target As Range) Application.DisplayAlerts = False For Each cell In Target    If Not Intersect(cell, [C11], [C62:C65]) Is Nothing Then '    End If    Next cell    Application.DisplayAlerts = TrueEnd Sub


Ранее использовался код, но время не менялось.
Код
   Private Sub Worksheet_Change(ByVal Target As Range)    Application.DisplayAlerts = False    For Each cell In Target   If Not Intersect(cell, [C11], [C62:C65]) Is Nothing Then '      Cell.Offset(0, 3) = Now    End If    Next cell    Application.DisplayAlerts = TrueEnd Sub
Изменено: max_2311 - 15.04.2014 15:02:55
 
А это пробовали?
Код
If Not Intersect(сell, Union([C11], [C62:C65])) Is Nothing Then
Согласие есть продукт при полном непротивлении сторон
 
Также возникает ошибка в строке If Not.
Код
Private Sub Worksheet_Change(ByVal Target As Range)     
Application.DisplayAlerts = False    For Each cell In Target   ' 
 If Not Intersect(Cell, Union([C11], [C62:C65])) Is Nothing Then ' C11, C62:C65       
Cell.Offset(0, 3) = Now     
End If     
Next cell     
Application.DisplayAlerts = True 
End Sub
Изменено: max_2311 - 15.04.2014 22:07:57
 
Добрый день!
Подскажите почему вылетает такая ошибка
и эта ошибка только у меня на ПК выходит, на др этот файл без ошибок.

Если напишу
Код
Worksheets("Raschet").Range(ArtikulRange.Address).RemoveDuplicates Columns:=1, Header:=xlNo

или
Код
ArtikulRange.RemoveDuplicates Columns:=1, Header:=xlNo

как вверху советовали, то поможет? И где лучше писать между Sub uuu() и End Sub в любом месте?  
Изменено: AlexLin - 31.08.2016 21:43:44
 
Код
Sub uuu()

    Dim shSource As Worksheet, shTarget As Worksheet, lr As Long
     
    Application.ScreenUpdating = False
     
    Set shSource = Worksheets("Ввод результатов испытаний")
    Set shTarget = Worksheets("данные")
     
    lr = shTarget.Columns("A").Find(What:="*", LookIn:=xlFormulas, LookAt:= _
        xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _
        , SearchFormat:=False).Row + 1
         
    shSource.Range("D1:D83").Copy
   'shTarget.Cells(lr, "A").PasteSpecial Paste:=xlPasteAll, Transpose:=True
    shTarget.Cells(lr, "A").PasteSpecial Paste:=xlPasteValues, Transpose:=True
    Application.CutCopyMode = False
     
    Application.ScreenUpdating = True
 MsgBox "Сделано"
End Sub
Изменено: AlexLin - 01.09.2016 13:48:26
 
Код следует оформлять соответствующим тегом: ищите такую кнопку и исправьте своё сообщение.
P.S. Код копируйте при русской раскладке клавиатуры - тогда не будет вот таких символов: "Ñäåëàíî"  
 
Что я не так делаю?
Изменено: putevod - 31.08.2016 12:48:20
 
Попробуйте так:
Код
ActiveSheet.Range("B3").Select
А вообще, чтобы копировать, выделять необязательно:
Код
Private Sub CommandButton1_Click()
    Range("C8").Copy Sheets("Result").Range("B3")
End Sub
 
Цитата
putevod написал: Что я не так делаю?
Не следуете правилам форума - не показываете файл. Т.е. не показываете всю информацию, которая нужна для решения вопроса.
 
Цитата
Hugo написал:
Не следуете правилам форума - не показываете файл. Т.е. не показываете всю информацию, которая нужна для решения вопроса.
Здравствуйте! Наверное Вы думаете, что я абсолютно все время провожу перед компьютером? Это совершенно не так! На самом деле у меня дел так много, что компьютеру буквально по минутам вырываю кусочки времени. Дом, семья, работа, друзья, шабашки, какие-то проблемы от ЖКХ, социальные всякие нюансы, вплоть до того, что нередко забываю даже сделать что-то важное. У меня нет времени ни посмотреть телевизор, ни пообщаться в соцсетях, ни даже новости почитать. А вы мне предлагаете еще и читать какие-то правила? Да 90% всех правил 99% всех людей просто игнорируют. Это не связано с ленью или не желанием. Это связанно с избыточным количеством правил. На каждом сайте свои правила и тонкости, а их миллионы. Жизни не хватит, чтобы все правила перечитать. А помимо правил на сайтах в жизни нас окружают еще миллионы правил, расписывающих чуть ли не каждый наш шаг: религия, тысячи федеральных законов, этикет, нормы расписанные для работ (ГОСТы, СНиПы, ПБУ и их огромное количество), правила пользования техникой, безопасность, ПДД, расписание дня (тоже извините меня является правилом, не следуя которому можно нахлопотать себе проблем), а сколько договоров за всю жизнь (работа, кредиты), а сколько пользовательских соглашений при установке программ или регистраций почт или других услуг, ну а такие понятия, что если ты мужик, то должен что-то сделать - тоже набор правил, которые если не соблюдать, то можно лишиться поддержки общества и снизить качество своих социальных отношений. И это далеко не полный набор. Прошу прощения, что не прочитал ваших правил, сэкономив N-ное кол-во времени. Но так как эти правила не были явно навязаны мне перед тем, как отправить вопрос на сайт, я имел право считать их не обязательными, иначе бы их не соблюдение должно было привести не возможности задать вопрос, так как система бы не пропустила его в виду не выполнения правил. И!!! Что я вам не выложил то, я так и не понял? Какой файл вам нужен? Сам XLSM? Так он пустой и в нем нет ничего кроме кнопки и код к этой кнопки пока выглядит точно так же, как я выложил в изображении. То есть все что есть в изображении (если не считать одной кнопки на странице) является и так 100% всей информации? Может вам еще весь жесткий диск на 2Тб отправить, чтоб вам легче было разобраться в 4 строчках?
 
Юрий М, Спасибо! Оба способа не вызывают ошибки и выполняют то, что я хотел!
 
Цитата
putevod написал:
Может вам еще весь жесткий диск на 2Тб отправить, чтоб вам легче было разобраться в 4 строчках?
Не нужен весь диск. И рабочий файл не нужен. Помощь нужна кому - Вам? Так помогите помогающим: не должны они тратить своё время, чтобы рисовать таблицу с данными. Вот к чему Вас призывают.
Цитата
putevod написал:
вы мне предлагаете еще и читать какие-то правила?
Да, предлагаем. Не будете их соблюдать - помощь или затянется или вообще её не получите. Неужели это так трудно понять?
Цитата
putevod написал:
эти правила не были явно навязаны мне перед тем, как отправить вопрос на сайт
Не совсем так: См. вторую тему на первой странице:
Цитата
Важно, Закрыто: ПРАВИЛА ФОРУМА
Обязательно к прочтению перед созданием новой темы
Думаю, вопрос исчерпан.
 
Цитата
putevod написал:
То есть все что есть в изображении (если не считать одной кнопки на странице) является и так 100% всей информации?
Вижу что времени сидеть за компом нет :)
Добавьте к 100 ещё 1% информации - где именно расположен код?
Я на 99% уверен что знаю причину ошибки - но всёж есть ещё 1%...
Изменено: Hugo - 01.09.2016 13:23:41
 
Цитата
putevod написал: У меня нет времени ни посмотреть телевизор, ни пообщаться в соцсетях, ни даже новости почитать. А вы мне предлагаете еще и читать какие-то правила?
За то время, которое было потрачено на сочинение и набор этого текста, Правила можно было наизусть выучить. Их не так много. Без файла с проблемой разговор неочем. Может у Вас в Range("B3").Select буква B не латинская, а кириллическая?
Согласие есть продукт при полном непротивлении сторон
Страницы: 1 2 След.
Наверх