Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Excel VBA

Модерирует : ShIvADeSt

ShIvADeSt (23-04-2007 01:59): http://forum.ru-board.com/topic.cgi?forum=33&topic=8273  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102

   

RUSmafia



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

 
 
Обсуждаем вопросы только по Excel VBA
(программирование макросов, скриптов, пользовательских функций и т.п.).
Приветствуются ссылки на ресурсы и справочную литературу по теме.
 
Вопросы по работе с MS Excel, не относящиеся к программированию, задаем в теме Excel FAQ

 
Обратите внимание, этот топик для помощи в изучении и использовании VBA. Посему запросы типа "Напишите мне такой-то макрос, я VBA не знаю и знать не хочу" не приветствуются.
Древняя мудрость: "Накорми голодного рыбой и он погибнет, научи его ловить рыбу и ты спасешь его."(R)
 
Информация общего характера:
  • Список соответствия имен функций в английской и русской версиях Excel
  • Описание Microsoft Excel File Format
     
    Рекомендации:
    Если у Вас есть проблема, не решаемая стандартными средствами Excel (об этом можно уточнить здесь) или требующая автоматизации, попробуйте для начала записать макрос самим Excel через меню Сервис (Tools) - Макрос (Macro) - Начать запись (Record New Macro). Подробнее здесь. В большинстве случаев получившийся код (Сервис-Макрос-Макросы-Изменить) Вас не удовлетворит, но подскажет, какие объекты-методы-свойства использовать.  
    Другой Ваш помощник - Просмотр объектов (Object Browser). Ну и встроення помощь (F1), естественно.
     
    Если Вы в тупике, покажите Ваш код (или часть кода) здесь.  Если вылазит ошибка, цитируйте ее полностью. Если код слишком большой, используйте тeг [more].
    Используйте отладчик - Breakpoints (F9), Watches (Shift-F9), Steps (F8 и др.) Сильно облегчает поиск ошибок.

     
    Рекомендуется к прочтению:
  • Первые шаги с Excel VBA
  • Excel VBA: Приёмы программирования
  • WinApi. Лекция из курса "Основы офисного программирования и язык VBA" (для продвинутых)
  • Daily Dose of Excel (eng.) - тематический блог: советы по работе с Excel и прочие материалы
  • Excel Macros & Excel VBA Code Tips, Tricks (eng.) - советы, трюки и уловки
  • Mr. Excel (forum) (eng.) - весьма оживленный форум по Excel&VBA.
     
    Родственные топики:
  • Вопросы по работе с MS Excel - Excel FAQ - часть 1, часть 2
  • Технические проблемы с MS Office 2003 или Office XP.
  • Word VBA все вопросы по Word VBA туда
  • Access все вопросы по программированию в Access туда
  • Книжульки по VBA - книги по программированию с использованием VBA
     
    Конкретные вопросы:
    Форма-заставка
    Как запустить макрос при изменении положения курсора или значения ячейки
  • Пример 1
  • Пример 2
  • Пример 3 (проверка области)
  • Пример 4
  • Пример 5
    Зацикливание в функции Change или SelectionChange
     
    Ранжирование без пробелов (макрос включает функции сортировки массива и удаления дубликатов, работает и в Excel 2007)
  • под Office 97
     
    Добавление в главное меню своего пункта, ассоциированного с макросом
    Создание ярлыка на рабочем столе
    Снятие защиты листа при забытом пароле
    Смена раскладки клавиатуры
    Скролл формы колесом прокрутки мыши
    Оптимизация кода по быстродействию использованием массивов

  • Всего записей: 556 | Зарегистр. 31-07-2002 | Отправлено: 21:40 14-10-2004 | Исправлено: lucky_Luk, 20:44 13-04-2007
    AndVGri

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Panteran3785

    Цитата:
    For i = 24 To Cells(lRowsCount, lColCount)

    А если в Cells(lRowsCount, lColCount) находится текст? Почему старт с 24 строки?
     
     
    Добавлено:
    crotoff

    Код:
     
    Dim i As Long, splitResult() As String
     
    splipResult = VBA.Split(ActiveCell.Value, vbCr) 'а может vbCrLf или vbLf - эксперементируй
    For i = LBound(splitResult) To UBound(slitResult)
       Worksheets("ИмяЛистаВставки").Cells(i + Offset, 1&).Value = splitResult(i) 'Offset - смещение до требуемой строки
    Next i
     

    Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 18:45 17-04-2007
    Panteran3785

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AndVGri

    Цитата:
    Почему старт с 24 строки?  

    Потому, что с 24 строки начинается сама таблица с данными.  Ребят, помогите решить эту задачу, т.к. это нужно для формирования прайса в Акцессе, но сначала нужно решить в экселе. Нужно, чтобы по каждому наименованию, которое находится в столбце С добавилась соответсвующая категория в любой свободный столбец (например, L), которая находится в столбце А, только есть некоторые ньюнансы, например, наименование - Сист.блок..., а категория - Компьютеры Flextron, наименование - кулер, а категория - Охлажадющие устройства. Поэтому я и пошла более простым? способом - извлечь из наименования первое слово, добавить в свободный столбец и так по каждому наименованию, и таким образом сформировать свои категории, потому, что не знаю как можно сравнить Сист.блок с Компьютером. Только вот код, конечно же не работет. Я не очень сильна в программировании, я только учусь. Ну хоть помогите составить код. в книгах ничего приблизительно похожего не нашла.
        
        

    Всего записей: 9 | Зарегистр. 16-04-2007 | Отправлено: 20:08 17-04-2007
    Troitsky



    Водник Водкин
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    keha

    Цитата:
    Можно как-нибудь с помощью макросов создать пустой (новый) текстовый файл и записать в него с разделителями выборочные столбцы? <...> чтобы в текстовый файл попали данные из столбцов A, D и E, разделенные точкой с запятой.)

    Например, так:

    Код:
      Dim F As Integer
      Dim r As Range
      Dim strTemp As String
       
      F = FreeFile ' Определяем свободный номер файла
      Open "C:\temp.csv" For Output As #F
        For Each r In ActiveSheet.UsedRange.Rows
          strTemp = ""
          strTemp = CStr(Cells(r.Row, 1).Value) & ";" & _
                    CStr(Cells(r.Row, 4).Value) & ";" & _
                    CStr(Cells(r.Row, 5).Value)
          Print #F, strTemp
        Next r
      Close #F



    ----------
    Мы в хорошем настроении гуляем по лесам.
    Кто обидеть нас захочет – сам получит по усам.
    Сам полу- получит по усам. Сам полу- получит по усам!

    Всего записей: 795 | Зарегистр. 13-12-2003 | Отправлено: 20:33 17-04-2007
    AndVGri

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Panteran3785

    Цитата:
    Потому, что с 24 строки начинается сама таблица с данными

    Сударыня, вы коварны. Прайс fcenter я скачал, собственно таблица с данными начинается с 144 строки, да и расположение колонок данных несколько иное, чем вы приводите. Код решающий вашу проблему в пределах того, что я понял из ваших пояснений
    Подробнее...

    Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 21:32 17-04-2007 | Исправлено: AndVGri, 06:21 18-04-2007
    crotoff

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    2AndVGri
    Спасибо, дружищще!!! Получилось!
     
    Поэкспериментировал, и вот этот вариант у меня сработал:
     
    Dim i As Integer, splitResult() As String
     splitResult = VBA.Split(ActiveCell.Value, vbLf)
    For i = LBound(splitResult) + 1 To UBound(splitResult) + 1
       Worksheets("2").Cells(i, 1) = splitResult(i - 1)
    Next i
     
    и ещё одну фишку придумал чтобы сформировать список для Сводной таблицы:
     
    Sub M1()
             Columns("C:C").Copy
        Columns("H:H").Select
        ActiveSheet.Paste
     Selection.TextToColumns Destination:=Range("H1"), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
            Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
            :=Chr(10), FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True
    End Sub
       
     
    ЗЫ. Интересно -  нельзя ли добиться такого же результата посредством одних лишь формул, ну там текстовых, индексных  функций? Потому что структура таблиц разная встречается, и придёцца заранее предусмотреть все варианты. Это было бы ваще cool.

    Всего записей: 961 | Зарегистр. 17-04-2007 | Отправлено: 09:07 18-04-2007 | Исправлено: crotoff, 13:25 18-04-2007
    Panteran3785

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AndVGri
    Спасибо за код. А какой ты прайс скачал? У меня таблица с заголовками и данными вообще-то начинается с 23 строки. В строке  написан Прейскурант, а еще выше название фирмы и ее данные. Я попоробовала применить твой код к тому прайсу, что у меня, но ничего не происходит. То, что там нужно подключить, я подключила.
     
    а вот  код, что я написала, надо было записать так:
    Sub ДобавлениеКатегории()
    Dim rst As Integer
    Dim i As Integer
    Dim k As Variant
    Dim w As Worksheet
     
        'определение диапазона
        Set w = ActiveSheet
        rst = w.UsedRange.Rows.Count
        For i = 1 To rst
            k = Cells(i, 3)
            If CStr(k) <> "" Then
                Cells(i, 12) = ExtractElement(k, 1, " ")
            End If
        Next i
     
    End Sub
    Все прекрасно работает. Но вот твой код меня заинтересовал.

    Всего записей: 9 | Зарегистр. 16-04-2007 | Отправлено: 14:01 18-04-2007
    AndVGri

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Panteran3785

    Цитата:
    http://www.fcenter.ru/products.shtml?eshop
    как вы писали в 99 части или :
    http://www.fcenter.ru/products/price/price.zip - собственно полный прайс-лист в html, под него и составлял. Вы, как я понял, использовали прайс-xls конкретного магазина. Видимо в этом разница. Если будете пробовать, то учтите, что html Excel открывает минут 10
     
    Вариант для прайса-xls на Бабушкинской
    Подробнее...

    Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 14:16 18-04-2007 | Исправлено: AndVGri, 14:59 18-04-2007
    aks_sv

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    The okk
    Долго не мог участвовать в форуме - лежал в больнице ;((
    Попытался поподробней описать свою задачу
    Имеется следующая таблица. Как видно в толбце А отображаютя наименования детали, а через две строки ее индетификационный номер. В следующих столбцах (остаток, приход и т.д.) напротив наименования детали сумма, а ниже количество, то же самое напротив индетификационного номера.
       
    Так вот мне необходимо на другом листе отобразить таблицу в следующем виде, где не будут повторения количества и суммы
       
     
     
    Добавлено:
    что-то не так сделал;((

    Всего записей: 109 | Зарегистр. 18-12-2006 | Отправлено: 14:55 18-04-2007
    The okk



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    aks_sv
    Файлы сначала нужно выложить в инет, а в теге img указывать ссылку на файл в инете.

    Всего записей: 327 | Зарегистр. 16-11-2006 | Отправлено: 15:08 18-04-2007
    aks_sv

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    звините: неправильно вставил таблицы

    Всего записей: 109 | Зарегистр. 18-12-2006 | Отправлено: 15:34 18-04-2007 | Исправлено: aks_sv, 08:03 19-04-2007
    Panteran3785

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AndVGri
    Спасибо! Действительно, я использовала xls файл, только прайс для дилеров, но они почти похожи. с Бабушкинским работает. А вот с html немного не понятно. Ты его после открытия экспортировал в Excel или открыл сразу в Excel. может я туплю, но как ни пробовала, все время открывается в html.

    Всего записей: 9 | Зарегистр. 16-04-2007 | Отправлено: 16:34 18-04-2007
    AndVGri

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Panteran3785
    Открыл html в Excel (Файл/Открыть...  D:\Temp\price.html) около 10 минут и готово

    Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 17:00 18-04-2007 | Исправлено: AndVGri, 17:07 18-04-2007
    Panteran3785

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AndVGri
    Попробовала, какую-то абаракадабру выдал, иероглифы, в чем может быть дело?

    Всего записей: 9 | Зарегистр. 16-04-2007 | Отправлено: 18:35 18-04-2007
    AndVGri

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Panteran3785
    Извини, забыл написать. В price.html не стоит определение кодировки. Поставь вот это
    <META HTTP-EQUIV="Content-Type" content="text/html; charset=windows-1251">
    после <head> в любом текстовом редакторе (не мудри обычный Блокнот).  

    Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 18:57 18-04-2007 | Исправлено: AndVGri, 19:01 18-04-2007
    val_04

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Drak
     
    Подскажи, как вставить рисунок дилетанту

    Всего записей: 12 | Зарегистр. 18-04-2007 | Отправлено: 19:34 18-04-2007
    SERGE_BLIZNUK

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    val_04
    Цитата:
    Подскажи, как вставить рисунок дилетанту  
    ничего, если я отвечу? читайте доки - они рулез! Вот из FAQ по RU-Board такое сообщение: Как вставить в сообщение картинку
     
     
    Добавлено:
    При необходимости выложить скриншот пользуйтесь сервисом ImageShack® (ограничение на размер файла <1.5 Mb)

    Всего записей: 2014 | Зарегистр. 12-09-2002 | Отправлено: 22:36 18-04-2007
    aks_sv

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    The okk
    Имеется следующая таблица. Как видно в толбце А отображаютя наименования детали, а через две строки ее индетификационный номер. В следующих столбцах (остаток, приход и т.д.) напротив наименования детали сумма, а ниже количество, то же самое напротив индетификационного номера.

    Так вот мне необходимо на другом листе отобразить таблицу в следующем виде, где не будут повторения количества и суммы

    Всего записей: 109 | Зарегистр. 18-12-2006 | Отправлено: 07:39 19-04-2007 | Исправлено: aks_sv, 08:00 19-04-2007
    AndVGri

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    aks_sv
    Что-то типа как бы так возможно
    Подробнее...

    Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 08:03 19-04-2007
    aks_sv

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AndVGri
     
    Премного благодарен
     
    Добавлено:
    AndVGri
    Если можно еще вопрос: Каксделать чтоб записи в новом листе начинались со второй строчки?

    Всего записей: 109 | Зарегистр. 18-12-2006 | Отправлено: 10:00 19-04-2007 | Исправлено: aks_sv, 11:26 19-04-2007
    AndVGri

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    aks_sv
    написать перед For
    pos = 1&

    Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 12:30 19-04-2007
       

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Excel VBA
    ShIvADeSt (23-04-2007 01:59): http://forum.ru-board.com/topic.cgi?forum=33&topic=8273


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru