Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Синтаксис VBA.Перенос данных и заполнение ячеек по условию. - Страница 2 - Мир MS Excel

Старая форма входа
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Модератор форума: китин, _Boroda_  
Синтаксис VBA.Перенос данных и заполнение ячеек по условию.
Treider01 Дата: Четверг, 11.09.2014, 18:56 | Сообщение № 21
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 1 ±
Замечаний: 0% ±

Excel 2003
Ошибка возникла когда я добавил много ячеек для копирования, всё остальные манипуляции с кодом макроса прошли нормально. Файл прилагаю. Очень прошу помочь.

Большое спасибо!
К сообщению приложен файл: Example2.xls (63.0 Kb)


Сообщение отредактировал Treider01 - Четверг, 11.09.2014, 19:06
 
Ответить
СообщениеОшибка возникла когда я добавил много ячеек для копирования, всё остальные манипуляции с кодом макроса прошли нормально. Файл прилагаю. Очень прошу помочь.

Большое спасибо!

Автор - Treider01
Дата добавления - 11.09.2014 в 18:56
RAN Дата: Четверг, 11.09.2014, 21:21 | Сообщение № 22
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
[vba]
Код
    j1 = 2: j3 = 2: j3 = 2 ' инициализация счётчиков листов-приёмников
[/vba]
а j4 мыши съели. :D


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[vba]
Код
    j1 = 2: j3 = 2: j3 = 2 ' инициализация счётчиков листов-приёмников
[/vba]
а j4 мыши съели. :D

Автор - RAN
Дата добавления - 11.09.2014 в 21:21
ikki Дата: Четверг, 11.09.2014, 21:34 | Сообщение № 23
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
а я чо? а я ничо!
это всё копипаст виноватый.
я за ним не первый раз подобное замечаю... %)


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениеа я чо? а я ничо!
это всё копипаст виноватый.
я за ним не первый раз подобное замечаю... %)

Автор - ikki
Дата добавления - 11.09.2014 в 21:34
RAN Дата: Четверг, 11.09.2014, 21:40 | Сообщение № 24
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Мышеловка ;)
[vba]
Код
      If .Cells(i, "v") = 3 Then
           j4 = j4 + 1
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеМышеловка ;)
[vba]
Код
      If .Cells(i, "v") = 3 Then
           j4 = j4 + 1
[/vba]

Автор - RAN
Дата добавления - 11.09.2014 в 21:40
Treider01 Дата: Пятница, 12.09.2014, 13:44 | Сообщение № 25
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 1 ±
Замечаний: 0% ±

Excel 2003
Добрый день!

Уважаемый RAN, а что вы имели ввиду под "мышеловкой"? Спасибо за найденную неточность, сейчас вроде как всё работает.


Сообщение отредактировал Treider01 - Пятница, 12.09.2014, 13:45
 
Ответить
СообщениеДобрый день!

Уважаемый RAN, а что вы имели ввиду под "мышеловкой"? Спасибо за найденную неточность, сейчас вроде как всё работает.

Автор - Treider01
Дата добавления - 12.09.2014 в 13:44
RAN Дата: Пятница, 12.09.2014, 14:08 | Сообщение № 26
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Мышеловка мешает мышам съесть j4. (запустить дальнейший код, когда номер строки = 0)


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеМышеловка мешает мышам съесть j4. (запустить дальнейший код, когда номер строки = 0)

Автор - RAN
Дата добавления - 12.09.2014 в 14:08
Treider01 Дата: Пятница, 12.09.2014, 15:04 | Сообщение № 27
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 1 ±
Замечаний: 0% ±

Excel 2003
Хорошо, большое спасибо, теперь возвращаясь ко второму вопросу - я попытался написать самостоятельно макрос,

[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]

Не работает к сожалению, файл с пояснениями прилагаю.

Большое спасибо за оказанное внимание.
К сообщению приложен файл: Example2.1.xls (63.5 Kb)
 
Ответить
СообщениеХорошо, большое спасибо, теперь возвращаясь ко второму вопросу - я попытался написать самостоятельно макрос,

[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]

Не работает к сожалению, файл с пояснениями прилагаю.

Большое спасибо за оказанное внимание.

Автор - Treider01
Дата добавления - 12.09.2014 в 15:04
Gustav Дата: Пятница, 12.09.2014, 15:51 | Сообщение № 28
Группа: Админы
Ранг: Участник клуба
Сообщений: 2776
Репутация: 1152 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Когда вы обявляете переменные - что значит знак & после каждой переменной?

краткий способ объявления некоторых типов. i& - то же самое, что i As Long

По науке называется "символы типов" (type characters), подробнее, например, тут: http://msdn.microsoft.com/ru-ru/library/s9cz43ek.aspx


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Когда вы обявляете переменные - что значит знак & после каждой переменной?

краткий способ объявления некоторых типов. i& - то же самое, что i As Long

По науке называется "символы типов" (type characters), подробнее, например, тут: http://msdn.microsoft.com/ru-ru/library/s9cz43ek.aspx

Автор - Gustav
Дата добавления - 12.09.2014 в 15:51
Treider01 Дата: Пятница, 12.09.2014, 16:03 | Сообщение № 29
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 1 ±
Замечаний: 0% ±

Excel 2003
Gustav,

Спасибо большое!
 
Ответить
СообщениеGustav,

Спасибо большое!

Автор - Treider01
Дата добавления - 12.09.2014 в 16:03
ikki Дата: Понедельник, 15.09.2014, 04:58 | Сообщение № 30
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
файл с пояснениями прилагаю.
не нашёл я там вашего макроса.


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщение
файл с пояснениями прилагаю.
не нашёл я там вашего макроса.

Автор - ikki
Дата добавления - 15.09.2014 в 04:58
Treider01 Дата: Понедельник, 15.09.2014, 11:04 | Сообщение № 31
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 1 ±
Замечаний: 0% ±

Excel 2003
Доброе утро!

не нашёл я там вашего макроса.


Сие есть странно ибо файл один и у меня он с макросом, я ещё продублировал макрос в самом сообщении ну да ладно. Надеюс на этот раз макрос будет в файле.

[offtop]А что это вас заставило в 5 утра на форум зайти?
К сообщению приложен файл: 6375805.xls (71.5 Kb)


Сообщение отредактировал Treider01 - Понедельник, 15.09.2014, 11:05
 
Ответить
СообщениеДоброе утро!

не нашёл я там вашего макроса.


Сие есть странно ибо файл один и у меня он с макросом, я ещё продублировал макрос в самом сообщении ну да ладно. Надеюс на этот раз макрос будет в файле.

[offtop]А что это вас заставило в 5 утра на форум зайти?

Автор - Treider01
Дата добавления - 15.09.2014 в 11:04
ikki Дата: Понедельник, 15.09.2014, 11:13 | Сообщение № 32
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
вот здесь:[vba]
Код
b = Cells(a, "a")
[/vba]одно волшебное словечко пропустили
b у вас объявлен как Range, т.е. объект
присвоение переменной объекта (точнее, ссылки на объект) выполняется с помощью оператора Set:[vba]
Код
Set b = Cells(a, "a")
[/vba]

на что, кстати, недвусмысленно ругался компилятор во время выполнения, выдавая ошибку 91.
а в справке по этой ошибке, имхо, всё достаточно подробно и наглядно описано.
на буржуйском, правда...

[offtop]не в 5, а в 7. в большой семье кто раньше проснулся - того и тапки :p [/offtop]


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki


Сообщение отредактировал ikki - Понедельник, 15.09.2014, 11:15
 
Ответить
Сообщениевот здесь:[vba]
Код
b = Cells(a, "a")
[/vba]одно волшебное словечко пропустили
b у вас объявлен как Range, т.е. объект
присвоение переменной объекта (точнее, ссылки на объект) выполняется с помощью оператора Set:[vba]
Код
Set b = Cells(a, "a")
[/vba]

на что, кстати, недвусмысленно ругался компилятор во время выполнения, выдавая ошибку 91.
а в справке по этой ошибке, имхо, всё достаточно подробно и наглядно описано.
на буржуйском, правда...

[offtop]не в 5, а в 7. в большой семье кто раньше проснулся - того и тапки :p [/offtop]

Автор - ikki
Дата добавления - 15.09.2014 в 11:13
Treider01 Дата: Понедельник, 15.09.2014, 11:20 | Сообщение № 33
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 1 ±
Замечаний: 0% ±

Excel 2003
на что, кстати, недвусмысленно ругался компилятор во время выполнения, выдавая ошибку 91.
а в справке по этой ошибке, имхо, всё достаточно подробно и наглядно описано.
на буржуйском, правда...


В том то и дело что справку не выдавал, просто окошко с ошибкой, без номера ошибки или ещё чего-то.

Второй вопрос - в Select Case мне в идеале надо проверить два значения в столбцах А и В в sheet3. Причём проверку осуществить одновременно (т.е. в зависимости от значений ячеек в этих столбцах - переставлять остальные значения). Такое возможно осуществить ? Сможете подсказать ?
 
Ответить
Сообщение
на что, кстати, недвусмысленно ругался компилятор во время выполнения, выдавая ошибку 91.
а в справке по этой ошибке, имхо, всё достаточно подробно и наглядно описано.
на буржуйском, правда...


В том то и дело что справку не выдавал, просто окошко с ошибкой, без номера ошибки или ещё чего-то.

Второй вопрос - в Select Case мне в идеале надо проверить два значения в столбцах А и В в sheet3. Причём проверку осуществить одновременно (т.е. в зависимости от значений ячеек в этих столбцах - переставлять остальные значения). Такое возможно осуществить ? Сможете подсказать ?

Автор - Treider01
Дата добавления - 15.09.2014 в 11:20
ikki Дата: Понедельник, 15.09.2014, 11:23 | Сообщение № 34
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
просто окошко
вот такое окошко выдаёт.
с номером и кнопкой справки.
К сообщению приложен файл: 4667533.png (20.5 Kb)


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщение
просто окошко
вот такое окошко выдаёт.
с номером и кнопкой справки.

Автор - ikki
Дата добавления - 15.09.2014 в 11:23
ikki Дата: Понедельник, 15.09.2014, 11:29 | Сообщение № 35
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
Такое возможно осуществить ?
возможно.
разными способами.
можно вложенные If делать, можно соединять условия логическими операторами (Or, And), можно и в Select Case исхитриться запихнуть...

[p.s.]Treider01, не сочтите за "отсыл", но, может быть, Вам всё-таки какую-нибудь книжку прочитать по синтаксису?
как я слышал - там обычно всё чётко и системно излагается.
иначе - при столь фрагментарном "изучении" - и знания у вас будут фрагментарными.[/p.s.]


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщение
Такое возможно осуществить ?
возможно.
разными способами.
можно вложенные If делать, можно соединять условия логическими операторами (Or, And), можно и в Select Case исхитриться запихнуть...

[p.s.]Treider01, не сочтите за "отсыл", но, может быть, Вам всё-таки какую-нибудь книжку прочитать по синтаксису?
как я слышал - там обычно всё чётко и системно излагается.
иначе - при столь фрагментарном "изучении" - и знания у вас будут фрагментарными.[/p.s.]

Автор - ikki
Дата добавления - 15.09.2014 в 11:29
Treider01 Дата: Понедельник, 15.09.2014, 11:30 | Сообщение № 36
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 1 ±
Замечаний: 0% ±

Excel 2003
вот такое окошко выдаёт.
с номером и кнопкой справки.


Ваше окошко отличается от моего. У меня просто было run time error. А поиск по буржуйским сайтам по этой ошибке выдал множество различных результатов. Тем более это для вас достаточно легко разобраться в этом, я ангийский знаю достаточно хорошо, но в технической части я не настолько подкован, чтобы разобраться что необходимо сделать.

И всё-таки по моему вопросу можно что-то сделать?

Treider01, не сочтите за "отсыл", но, может быть, Вам всё-таки какую-нибудь книжку прочитать по синтаксису?


Читаю, но у меня ещё основная работа, времени не так много. Разорваться и делать 10 дел одновременно я не в состоянии. Тем более я ещё болею. Так что стараюсь сделать так, как могу.


Сообщение отредактировал Treider01 - Понедельник, 15.09.2014, 11:32
 
Ответить
Сообщение
вот такое окошко выдаёт.
с номером и кнопкой справки.


Ваше окошко отличается от моего. У меня просто было run time error. А поиск по буржуйским сайтам по этой ошибке выдал множество различных результатов. Тем более это для вас достаточно легко разобраться в этом, я ангийский знаю достаточно хорошо, но в технической части я не настолько подкован, чтобы разобраться что необходимо сделать.

И всё-таки по моему вопросу можно что-то сделать?

Treider01, не сочтите за "отсыл", но, может быть, Вам всё-таки какую-нибудь книжку прочитать по синтаксису?


Читаю, но у меня ещё основная работа, времени не так много. Разорваться и делать 10 дел одновременно я не в состоянии. Тем более я ещё болею. Так что стараюсь сделать так, как могу.

Автор - Treider01
Дата добавления - 15.09.2014 в 11:30
SkyPro Дата: Понедельник, 15.09.2014, 11:37 | Сообщение № 37
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010


skypro1111@gmail.com
 
Ответить
СообщениеМинут 30 на прочтение и осознание

Автор - SkyPro
Дата добавления - 15.09.2014 в 11:37
Treider01 Дата: Понедельник, 15.09.2014, 12:08 | Сообщение № 38
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 1 ±
Замечаний: 0% ±

Excel 2003
SkyPro,

Спасибо, будет время обязательно почитаю, надеюсь там будет ответ на мой вопрос.

EDIT
К сожалению ответа на свой вопрос я так и не нашёл.


Сообщение отредактировал Treider01 - Понедельник, 15.09.2014, 13:35
 
Ответить
СообщениеSkyPro,

Спасибо, будет время обязательно почитаю, надеюсь там будет ответ на мой вопрос.

EDIT
К сожалению ответа на свой вопрос я так и не нашёл.

Автор - Treider01
Дата добавления - 15.09.2014 в 12:08
_Boroda_ Дата: Понедельник, 15.09.2014, 14:09 | Сообщение № 39
Группа: Админы
Ранг: Местный житель
Сообщений: 16681
Репутация: 6482 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
ответа на свой вопрос я так и не нашёл.

Все просто у Вас:
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
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
ответа на свой вопрос я так и не нашёл.

Все просто у Вас:
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
[/vba]

Автор - _Boroda_
Дата добавления - 15.09.2014 в 14:09
Treider01 Дата: Понедельник, 15.09.2014, 14:29 | Сообщение № 40
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 1 ±
Замечаний: 0% ±

Excel 2003
2. в цикле переменную b нужно менять
итог


Большое спасибо !

Я идиот и не замечал, что 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 не могу по причине большого числа случаев.
К сообщению приложен файл: 2419990.xls (65.5 Kb)


Сообщение отредактировал Treider01 - Понедельник, 15.09.2014, 14:36
 
Ответить
Сообщение
2. в цикле переменную b нужно менять
итог


Большое спасибо !

Я идиот и не замечал, что 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
Дата добавления - 15.09.2014 в 14:29
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!