Ошибка возникла когда я добавил много ячеек для копирования, всё остальные манипуляции с кодом макроса прошли нормально. Файл прилагаю. Очень прошу помочь.
Большое спасибо!
Ошибка возникла когда я добавил много ячеек для копирования, всё остальные манипуляции с кодом макроса прошли нормально. Файл прилагаю. Очень прошу помочь.
Хорошо, большое спасибо, теперь возвращаясь ко второму вопросу - я попытался написать самостоятельно макрос,
[vba]
Код
Sub value() Dim a&, b As Range a = 2 b = Cells(a, "a") Do While Cells(a, "a") <> "" Select Case b Case "b" Cells(a, "g").value = Cells(a, "f") * 5 Case "s" Cells(a, "g").value = Cells(a, "f") * 20 Case "f" Cells(a, "g").value = Cells(a, "f") * 10 Case "g" Cells(a, "g").value = Cells(a, "f") * 50 End Select a = a + 1 Loop End Sub
[/vba]
Не работает к сожалению, файл с пояснениями прилагаю.
Большое спасибо за оказанное внимание.
Хорошо, большое спасибо, теперь возвращаясь ко второму вопросу - я попытался написать самостоятельно макрос,
[vba]
Код
Sub value() Dim a&, b As Range a = 2 b = Cells(a, "a") Do While Cells(a, "a") <> "" Select Case b Case "b" Cells(a, "g").value = Cells(a, "f") * 5 Case "s" Cells(a, "g").value = Cells(a, "f") * 20 Case "f" Cells(a, "g").value = Cells(a, "f") * 10 Case "g" Cells(a, "g").value = Cells(a, "f") * 50 End Select a = a + 1 Loop End Sub
[/vba]
Не работает к сожалению, файл с пояснениями прилагаю.
Сие есть странно ибо файл один и у меня он с макросом, я ещё продублировал макрос в самом сообщении ну да ладно. Надеюс на этот раз макрос будет в файле.
[offtop]А что это вас заставило в 5 утра на форум зайти?
Сие есть странно ибо файл один и у меня он с макросом, я ещё продублировал макрос в самом сообщении ну да ладно. Надеюс на этот раз макрос будет в файле.
[offtop]А что это вас заставило в 5 утра на форум зайти?Treider01
[/vba]одно волшебное словечко пропустили b у вас объявлен как Range, т.е. объект присвоение переменной объекта (точнее, ссылки на объект) выполняется с помощью оператора Set:[vba]
Код
Set b = Cells(a, "a")
[/vba]
на что, кстати, недвусмысленно ругался компилятор во время выполнения, выдавая ошибку 91. а в справке по этой ошибке, имхо, всё достаточно подробно и наглядно описано. на буржуйском, правда...
[offtop]не в 5, а в 7. в большой семье кто раньше проснулся - того и тапки [/offtop]
вот здесь:[vba]
Код
b = Cells(a, "a")
[/vba]одно волшебное словечко пропустили b у вас объявлен как Range, т.е. объект присвоение переменной объекта (точнее, ссылки на объект) выполняется с помощью оператора Set:[vba]
Код
Set b = Cells(a, "a")
[/vba]
на что, кстати, недвусмысленно ругался компилятор во время выполнения, выдавая ошибку 91. а в справке по этой ошибке, имхо, всё достаточно подробно и наглядно описано. на буржуйском, правда...
[offtop]не в 5, а в 7. в большой семье кто раньше проснулся - того и тапки [/offtop]ikki
помощь по Excel и VBA ikki@fxmail.ru, icq 592842413, skype alex.ikki
Сообщение отредактировал ikki - Понедельник, 15.09.2014, 11:15
на что, кстати, недвусмысленно ругался компилятор во время выполнения, выдавая ошибку 91. а в справке по этой ошибке, имхо, всё достаточно подробно и наглядно описано. на буржуйском, правда...
В том то и дело что справку не выдавал, просто окошко с ошибкой, без номера ошибки или ещё чего-то.
Второй вопрос - в Select Case мне в идеале надо проверить два значения в столбцах А и В в sheet3. Причём проверку осуществить одновременно (т.е. в зависимости от значений ячеек в этих столбцах - переставлять остальные значения). Такое возможно осуществить ? Сможете подсказать ?
на что, кстати, недвусмысленно ругался компилятор во время выполнения, выдавая ошибку 91. а в справке по этой ошибке, имхо, всё достаточно подробно и наглядно описано. на буржуйском, правда...
В том то и дело что справку не выдавал, просто окошко с ошибкой, без номера ошибки или ещё чего-то.
Второй вопрос - в Select Case мне в идеале надо проверить два значения в столбцах А и В в sheet3. Причём проверку осуществить одновременно (т.е. в зависимости от значений ячеек в этих столбцах - переставлять остальные значения). Такое возможно осуществить ? Сможете подсказать ?Treider01
возможно. разными способами. можно вложенные If делать, можно соединять условия логическими операторами (Or, And), можно и в Select Case исхитриться запихнуть...
[p.s.]Treider01, не сочтите за "отсыл", но, может быть, Вам всё-таки какую-нибудь книжку прочитать по синтаксису? как я слышал - там обычно всё чётко и системно излагается. иначе - при столь фрагментарном "изучении" - и знания у вас будут фрагментарными.[/p.s.]
возможно. разными способами. можно вложенные If делать, можно соединять условия логическими операторами (Or, And), можно и в Select Case исхитриться запихнуть...
[p.s.]Treider01, не сочтите за "отсыл", но, может быть, Вам всё-таки какую-нибудь книжку прочитать по синтаксису? как я слышал - там обычно всё чётко и системно излагается. иначе - при столь фрагментарном "изучении" - и знания у вас будут фрагментарными.[/p.s.]ikki
помощь по Excel и VBA ikki@fxmail.ru, icq 592842413, skype alex.ikki
вот такое окошко выдаёт. с номером и кнопкой справки.
Ваше окошко отличается от моего. У меня просто было run time error. А поиск по буржуйским сайтам по этой ошибке выдал множество различных результатов. Тем более это для вас достаточно легко разобраться в этом, я ангийский знаю достаточно хорошо, но в технической части я не настолько подкован, чтобы разобраться что необходимо сделать.
Treider01, не сочтите за "отсыл", но, может быть, Вам всё-таки какую-нибудь книжку прочитать по синтаксису?
Читаю, но у меня ещё основная работа, времени не так много. Разорваться и делать 10 дел одновременно я не в состоянии. Тем более я ещё болею. Так что стараюсь сделать так, как могу.
вот такое окошко выдаёт. с номером и кнопкой справки.
Ваше окошко отличается от моего. У меня просто было run time error. А поиск по буржуйским сайтам по этой ошибке выдал множество различных результатов. Тем более это для вас достаточно легко разобраться в этом, я ангийский знаю достаточно хорошо, но в технической части я не настолько подкован, чтобы разобраться что необходимо сделать.
Treider01, не сочтите за "отсыл", но, может быть, Вам всё-таки какую-нибудь книжку прочитать по синтаксису?
Читаю, но у меня ещё основная работа, времени не так много. Разорваться и делать 10 дел одновременно я не в состоянии. Тем более я ещё болею. Так что стараюсь сделать так, как могу.Treider01
Сообщение отредактировал Treider01 - Понедельник, 15.09.2014, 11:32
Все просто у Вас: 1. не нужно переменной b давать As Range 2. в цикле переменную b нужно менять итог [vba]
Код
Sub value() Dim a&, b a = 2 b = Cells(a, "a") Do While b <> "" Select Case b Case "b" Cells(a, "g").value = Cells(a, "f") * 5 Case "s" Cells(a, "g").value = Cells(a, "f") * 20 Case "f" Cells(a, "g").value = Cells(a, "f") * 10 Case "g" Cells(a, "g").value = Cells(a, "f") * 50 End Select a = a + 1 b = Cells(a, "a") Loop End Sub
Все просто у Вас: 1. не нужно переменной b давать As Range 2. в цикле переменную b нужно менять итог [vba]
Код
Sub value() Dim a&, b a = 2 b = Cells(a, "a") Do While b <> "" Select Case b Case "b" Cells(a, "g").value = Cells(a, "f") * 5 Case "s" Cells(a, "g").value = Cells(a, "f") * 20 Case "f" Cells(a, "g").value = Cells(a, "f") * 10 Case "g" Cells(a, "g").value = Cells(a, "f") * 50 End Select a = a + 1 b = Cells(a, "a") Loop End Sub
Я идиот и не замечал, что b не меняется потому что вне цикла стоит.
Может быть вы мне подсобите с последним вопросом, а то видимо остальные люди уже устали помогать мне с моими глупостями - мне необходимо проверить не одно значения а два, выглядит примерно так -
[vba]
Код
Sub value() Dim a&, b, c a = 2 b = Cells(a, "a") c = Cells(a, "b") Do While b <> "" Select Case b And c Case "b" And "p1" Cells(a, "g").value = Cells(a, "f") * 5 Case "s" And "p2" Cells(a, "g").value = Cells(a, "f") * 20 Case "f" And "p3" Cells(a, "g").value = Cells(a, "f") * 10 Case "g" And "p4" Cells(a, "g").value = Cells(a, "f") * 50 End Select a = a + 1 b = Cells(a, "a") c = Cells(a, "b") Loop End Sub
[/vba]
К сожалению везде примеры с номерами и цифрами, а два условия нигде и никто не проверяет, даже на сайте майкрософта нет информации об этом.
Код не работает, пишет Type missmatch. Использовать конструкцию if...else не могу по причине большого числа случаев.
Я идиот и не замечал, что b не меняется потому что вне цикла стоит.
Может быть вы мне подсобите с последним вопросом, а то видимо остальные люди уже устали помогать мне с моими глупостями - мне необходимо проверить не одно значения а два, выглядит примерно так -
[vba]
Код
Sub value() Dim a&, b, c a = 2 b = Cells(a, "a") c = Cells(a, "b") Do While b <> "" Select Case b And c Case "b" And "p1" Cells(a, "g").value = Cells(a, "f") * 5 Case "s" And "p2" Cells(a, "g").value = Cells(a, "f") * 20 Case "f" And "p3" Cells(a, "g").value = Cells(a, "f") * 10 Case "g" And "p4" Cells(a, "g").value = Cells(a, "f") * 50 End Select a = a + 1 b = Cells(a, "a") c = Cells(a, "b") Loop End Sub
[/vba]
К сожалению везде примеры с номерами и цифрами, а два условия нигде и никто не проверяет, даже на сайте майкрософта нет информации об этом.
Код не работает, пишет Type missmatch. Использовать конструкцию if...else не могу по причине большого числа случаев.Treider01