Просто не догадался, что так можно формулы писать.
Большое спасибо, Сергей.
Тему можно закрывать
Большое спасибо, Сергей.
Тему можно закрывать
12.02.2013 07:33:53
Запросто может быть, что половина кода лишняя, т.к. я только учусь. К сожалению у меня нет возможности применить макрос на 2003 Экселе.
Если есть возможность указать на возможные ошибки или лишние строки без запуска, то буду благодарен. Если нет, то ничего страшного.
Изменено: |
|
|
11.02.2013 17:48:49
Приведенный макрос будет работать не далее 225 листа
Do While j1 < 225 Если вам надо задавать номер последнего обрабтываемого листа, то его можно например вводить через Inputbox, тогда код чуть изменится Dim j1, s1, s2, List j1 = 0 List=Inputbox ("Введите номер листа") Do While j1 < List j1 = j1 + 1 ' 'параметрами могут быть лист и имя файла 'имена файлов можно пллучать и командой dir ' s1 = "'1 год.xls'!Лист" & Trim(j1) & ".Protect_for_User_Non_for_VBA" s2 = "'1 год.xls'!Лист" & Trim(j1) & ".Get_Value_From_Close_Book" Application.Run s1 Application.Run s2 Loop End Sub Это самый примитивный вариант. Без всяких проверок на корректность введенного числа и т.п.
Изменено: |
|
|
11.02.2013 17:42:28
Всем здравствуйте!
Вопрос такого плана почему в приведенном ниже коде вылетает ошибка "Subscript out of range"?
Массив rRng и rRng2 равны по кол-ву элементов. Если заменить rRng(j) и rRng2(j) на переменные такого вида rRng(j, 1) и rRng2(j, 1) то ошибка пропадает и программа нормально все считает. Если ставить прерывания и смотреть массив, то Watch показывает каждый элемент массива rRng и rRng2 в следующем виде: rRng(1)----> rRng(1,1)=74744 (стрелочка означает "+", который горит рядом с rRng(1) и если на него нажать то отобразится rRng(1,1) Как я понимаю, rRng(j) и rRng(j,1) это различные виды записи одномерного массива. Подскажите в чем я ошибаюсь |
|||
|
10.02.2013 03:50:35
Спасибо. Именно из этого файла я и взял эти строчки: oDict.Item(<Key>) = "NewValue" Если КЛЮЧ "Key" в словаре есть, то ассоциированное с ним ЗНАЧЕНИЕ заменяется на заданное "NewValue" Если КЛЮЧ "Key" в словаре отсутствует, то создается новая ЗАПИСЬ с КЛЮЧОМ "Key" и ЗНАЧЕНИЕМ "NewValue" Просто не совсем понятна была реализация в макросе Hugo. Поэтому и столько вопросов. Но с вашей помощью все стало понятно. |
|||
|
09.02.2013 04:16:17
При задании нового значения этого свойства: oDict.Item(<Key>) = "NewValue" Если КЛЮЧ "Key" в словаре есть, то ассоциированное с ним ЗНАЧЕНИЕ заменяется на заданное "NewValue" Если КЛЮЧ "Key" в словаре отсутствует, то создается новая ЗАПИСЬ с КЛЮЧОМ "Key" и ЗНАЧЕНИЕМ "NewValue" Многое стало на места. Т.е. вы значения массива используете как ключ. А я почему-то думал, что значение массива это просто значение, но для него должен быть какой-то ключ. Короче это все от недостатка знаний :-( Бум будем дальше курить форум, Уокенбаха и иже с ними Большое спасибо, стало чуть понятней |
|||
|
09.02.2013 03:12:54
Hugo Извиняюсь за назойливость, но можно поподробнее.
Вот вы пишите комментарий 'перебираем в цикле массив (первый столбец), 'помещаем в словарь анализируемые значения и к каждому 'его позицию в массиве (номер строки массива) Ну понятно, что часть комента обрезалась, но это не страшно, т.к. смысл донесен. Но непонятна реализациявот этого момента: "помещаем в словарь анализируемые значения". Вот это и есть процесс помещения значения массива в словарь: oDict.Item(a(i, 1))? Ну а тут похоже просто ошибка: If oDict.exists([a25].Value) Then MsgBox oDict.Item([a2].Value) Вместо [a25] должно быть [a2], правильно? Или мы берем значение из ячейки А25 проверяем его наличие в словаре и если оно там есть, то тогда печатаем значение А2? |
|
|
08.02.2013 05:01:56
А эта строка MsgBox oDict.Item([a2].Value) что будет выводить на экран?
И еще вопросик oDict.Item(a(i, 1)) = i Правильно ли я понимаю, что в этой строке мы i-тому элементу словаря присваиваем i-тое значение массива? Тогда запись какая-то странная
Изменено: |
|
|
28.01.2013 18:24:18
А можно пропустить эти шаги:
И еще приходит на ум такой вариант (это в плане обучения) что через Count определить кол-во ячеек и потом задать адрес как А1:А-count+1 (надеюсь понятно написал). А еще есть Used, но я пока не понял как его применять :-( |
|||
|
28.01.2013 17:32:06
Добрый день
Подскажите почему вылетает такая ошибка
Так же файл примера
Изменено: |
|||
|
19.12.2012 05:18:28
Добрый день
файл примера во вложении. В формате 2010 офиса, т.к. в 2003 "умных" таблиц вроде как нема Необходимо чтобы в таблице "Itog" кол-во строк автоматически регулировалось в зависимости от кол-ва НЕ ПУСТЫХ строк в столбце "Unikart2" таблицы "Data", расположенной на Листе2. Можно ли такое сделать? |
|
|