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

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

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

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



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

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

 
Обратите внимание, этот топик для помощи в изучении и использовании VBA. Посему запросы типа "Напишите мне такой-то макрос, я VBA не знаю и знать не хочу" не приветствуются.
Древняя мудрость: "Накорми голодного рыбой и он погибнет, научи его ловить рыбу и ты спасешь его."(R)
 
Предыдущие ветки топика: Часть 1, Часть 2
 
Информация общего характера:
  • Список соответствия имен функций в английской и русской версиях Excel
  • Описание Microsoft Excel File Format (eng.)
     
    Рекомендации:
    Если у Вас есть проблема, не решаемая стандартными средствами 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.
  • Приемы, хитрости, трюки и нюансы работы в Microsoft Excel - сайт "Планета Excel", целиком посвященный Excel и всему, что с ним связано.
  • Microsoft Excel: Таблицы и VBA. Справочник. Вопросы и Ответы. Советы. Примеры.  
     
    Родственные топики:
  • Вопросы по работе с MS Excel - Excel FAQ - часть 1, часть 2, часть 3
  • Технические проблемы с MS Office 2003 или Office XP.
  • Word VBA все вопросы по Word VBA туда
  • Access все вопросы по программированию в Access туда
  • Книжульки по VBA - книги по программированию с использованием VBA
     
    Конкретные вопросы:
    Форма-заставка
    Как запустить макрос при изменении положения курсора или значения ячейки
  • Пример 1
  • Пример 2
  • Пример 3 (проверка области)
  • Пример 4
  • Пример 5
    Зацикливание в функции Change или SelectionChange
     
    Ранжирование без пробелов (макрос включает функции сортировки массива и удаления дубликатов, работает и в Excel 2007)
  • под Office 97
     
    Добавление в главное меню своего пункта, ассоциированного с макросом
    Создание ярлыка на рабочем столе
    Снятие защиты листа при забытом пароле
    Смена раскладки клавиатуры
    Скролл формы колесом прокрутки мыши
    Оптимизация кода по быстродействию использованием массивов
    Найти "чужое" окно и нажать в нем кнопку (вписать текст в текстовое поле)
    Работа с UNICODE-символами в VBA: запись, чтение из ячейки, перевод в ASС и обратно
    Как программно подключить дополнительные библиотеки (например, "Microsoft Scripting Runtime" или "Microsoft ActiveX Data Objects 2.8 Library) через References
     
    Перечень основных ColorIndex'ов из MSDN
     

    Смежные темы:
    Программы » Microsoft Office 2019 & 365 | 2016 | 2013 | 2010 | 2007 | 2003
    Программы » OneNote | Outlook 2013 & 2016 & 2019 | Outlook 2010 | Microsoft Mathematics & Math Solver
    Программы » Word FAQ | Excel FAQ | Access FAQ
    Прикладное программирование » Word VBA | Access VBA  
    Андеграунд » Microsoft Office 2019 | 2016 | 2013 | 2010 | 2007 | 2003
    Андеграунд » OneNote | Visio | SharePoint Server | Project Server | Exchange Server
    Андеграунд » Надстройки (add-ins) и коммерческие макросы Excel
    Андеграунд » Самостоятельная сборка дистрибутивов Оffice 2007/2010/2013/2016 | MUI для Office 2007

  • Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 10:16 11-01-2010 | Исправлено: ALeXkRU, 16:42 03-08-2021
    akellaks



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

    Всего записей: 66 | Зарегистр. 20-07-2008 | Отправлено: 09:24 10-09-2015 | Исправлено: akellaks, 09:31 10-09-2015
    idiMAN

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    akellaks
    Тут очень близко к Вашему случаю... Но нужно "допиливать"

    Всего записей: 466 | Зарегистр. 05-05-2003 | Отправлено: 12:33 10-09-2015
    Futurism

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    помогите, пожалуйста, написать макрос, который удаляет из блокнота цифры
    например
    40, текст
    25, текст1
    надо удалить именно эти цифры слева до запятой
    чтобы было  
    , текст
    , текст1
    Сам блокнот по пути D:/folder

    Всего записей: 1200 | Зарегистр. 04-02-2011 | Отправлено: 15:44 23-09-2015
    I95

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Futurism, немого офтоп но,
    Если пользуетесь тотал коммандером, то может быть Вам понравится другой вариант решения Вашей задачи с помощью утилиты TCIMG.
    Например такой доп кнопкой Вы удаляете все цифры из текстового файла под курсором (как один из вариантов решения)
    Подробнее...
    Масса решений различных вариантов задач у автора утилиты.

    Всего записей: 1063 | Зарегистр. 20-03-2009 | Отправлено: 16:25 23-09-2015
    Futurism

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ок, я попробую)  просто на работе нет ТС))

    Всего записей: 1200 | Зарегистр. 04-02-2011 | Отправлено: 14:32 24-09-2015
    kindtime

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте, помогите пожалуйста, мне облегчить задачу. Вот здесь эксель файл:
    http://rghost.ru/8kgVmxNb6
    Тут мы видим, что у нас есть 7 переменных:  x1-x7,желтое поле и для каждой переменной после него есть  3 переменных.
    Например, для переменной Х1, есть 3 переменных х1,х1,х1
     для переменной Х2, есть 3 переменных х2,х2,х2. и так далее. Для образца я просто написал для 4х переменных.
    Нужно переструктурировать данные.
    Сначала идет желтое поле (сколько бы колонок в нем не было) - потом- переменная х1-а потом ровно 3 переменных x1,x1,x1
     
    затем тоже самое.
    желтое поле(оно всегад статично)-переменная х2- и за  ней 3 переменных x2, x2,x2.
    Переменных у меня сотни в работе, но есть строгий порядок их следования, его нельзя нарушать.
    Кому нетрудно помогите написать макрос, который эту механическую работу облегчает.  
     

    Всего записей: 3 | Зарегистр. 02-10-2015 | Отправлено: 15:41 02-10-2015
    Ivan38Rus

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день.  
     
    Господа, есть задача в сращивании нескольких книг в одну непрерывную структуру.
     
    Есть готовый макрос, найденный на просторах интернета, который с этой задачей справляется, но есть необходимость "обрезать" первую строку (заголовки столбцов) в каждой сращиваемой книге. Помогите, пожалуйста, доработать данный скрипт.
     

    Код:
    Sub FiziK()
     
    Const strStartDir = "c:\test" 'папка, с которой начать обзор файлов
    Const strSaveDir = "c:\test\result" 'папка, в которую будет предложено сохранить результат
    Const blInsertNames = True  'вставлять строку заголовка (книга, лист) перед содержимым листа
     
    Dim wbTarget As New Workbook, wbSrc As Workbook, shSrc As Worksheet, shTarget As Worksheet, arFiles, _
        i As Integer, stbar As Boolean, clTarget As Range
     
    On Error Resume Next    'если указанный путь не существует, обзор начнется с пути по умолчанию
    ChDir strStartDir
    On Error GoTo 0
    With Application    'меньше писанины
    arFiles = .GetOpenFilename("Excel Files (*.xls*), *.xls*", , "Join files", , True)
    If Not IsArray(arFiles) Then End 'если не выбрано ни одного файла
    Set wbTarget = Workbooks.Add(template:=xlWorksheet)
    Set shTarget = wbTarget.Sheets(1)
        .ScreenUpdating = False
        stbar = .DisplayStatusBar
        .DisplayStatusBar = True
     
    For i = 1 To UBound(arFiles)
        .StatusBar = "Обработка файла " & i & " из " & UBound(arFiles)
        Set wbSrc = Workbooks.Open(arFiles(i), ReadOnly:=True)
        For Each shSrc In wbSrc.Worksheets
            If IsNull(shSrc.UsedRange.Text) Then 'лист не пустой
                Set clTarget = shTarget.Range("A1").Offset(shTarget.Range("A1").SpecialCells(xlCellTypeLastCell).Row, 0)
                'If blInsertNames Then
                    'clTarget = ">>> " & wbSrc.Name & " -- " & shSrc.Name
                    'Set clTarget = clTarget.Offset(1, 0)
                'End If
                shSrc.UsedRange.Copy clTarget
            End If
        Next
        wbSrc.Close False   'закрыть без запроса на сохранение
    Next
        .ScreenUpdating = True
        .DisplayStatusBar = stbar
        .StatusBar = False
     
    On Error Resume Next    'если указанный путь не существует и его не удается создать,
                            'обзор начнется с последней использованной папки
    If Dir(strSaveDir, vbDirectory) = Empty Then MkDir strSaveDir
    ChDir strSaveDir
    On Error GoTo 0
    arFiles = .GetSaveAsFilename("Result", "Excel Files (*.xlsx), *.xlsx", , "Save book")
     
    If VarType(arFiles) = vbBoolean Then 'если не выбрано имя
        GoTo save_err
    Else
        On Error GoTo save_err
        wbTarget.SaveAs arFiles
    End If
    End
    save_err:
        MsgBox "Book was not saved", vbCritical
    End With
    End Sub

     
    Заранее благодарю!

    Всего записей: 12 | Зарегистр. 26-02-2009 | Отправлено: 10:25 06-10-2015
    Winand



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Может лучше их все лучше в пдф перевести, чем один суперлист в экселе:-D

    Всего записей: 57 | Зарегистр. 20-01-2008 | Отправлено: 15:07 08-10-2015
    Futurism

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите , плиз. как значения в желтый ячейках сделать абсолютными.
    Например
    A1-B1=-3  ячейки с такими результатами помечены желтым.
    можно бы сделать так (A1-B1)*-1=3 но тут много таких желтых ячеек и она разбросаны по всему листу.
    Можно ли этот процесс как-то автоматизировать?
     
    PS: сорри вопрос снимаю ,сам допер))

    Всего записей: 1200 | Зарегистр. 04-02-2011 | Отправлено: 13:44 21-10-2015 | Исправлено: Futurism, 13:51 21-10-2015
    JekG

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
     
    подскажите как макросом посчитать такую штуку - в первом столбце сплошные цифры, во втором - с промежутками. нужно правее каждой заполненной ячейки второго столбца разместить автосумму значений из первого столбца которые находятся правее и выше этой заполененной ячейки из второго столбца. промежутки между заполненными значениями во втором стобце могут быть разные.

    Всего записей: 2691 | Зарегистр. 12-10-2005 | Отправлено: 22:04 04-11-2015
    KDPoid



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    В ячейке B4 должно быть 33 или 35 ?
     
    "подскажите как макросом посчитать" - это идея не понятна или какой-то конкретный затык ?
    Ну... пройтись циклом по строкам.
    Значения из столбца А складывать.  
    Если в B не пусто, выкладывать туда накопленную сумму. В зависимости от требований, или сбрасывать при этом накопленную сумму, или нет.  
     
    Если сформулировать конкретный вопрос: "Не знаю как сделать ля-ля.", тогда больше шансов получить в ответ "Ля-ля делается так:..."

    Всего записей: 404 | Зарегистр. 08-08-2006 | Отправлено: 08:28 06-11-2015
    mrdime



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Господа,
    Иногда попадаются старые файлы (в формате .xlsx кстати тоже) которые при попытке их закрытия (когда никаких изменений не вносилось) выдают сообщение типа "вы хотите сохранить изменения да/ нет".
    Почитал много литературы, но как ни пытался добиться отключения этого окна не смог.
    Какие бы изменения я не вносил в мой файл PERSONAL.XLSB, они не влияют на закрытие проблемных файлов.
    Использовал события Workbook_BeforeClose и Workbook_BeforeSave
    Пробовал следующие варианты:
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        Application.DisplayAlerts = False
        ActiveWorkbook.Close savechanges:=True
        Application.DisplayAlerts = True
    End Sub
    __
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
            Application.DisplayAlerts = False
            ThisWorkbook.Save
            ThisWorkbook.Close False
            Application.DisplayAlerts = True
    End Sub
    __
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        ActiveWorkbook.Saved = True
    End Sub
    __
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
        If (SaveAsUI = True) Then
            Cancel = True
        End If
    End Sub
    __
    Этот вариант (тоже предлагался) сохранить не смог, т.к. сабж его не сохраняет (хотя не думаю, что он бы сработал)
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
        Cancel = True
    End Sub
    __
    В то же время ВСЕ эти варианты работают, если их прописать в сам проблемный файл.
    Но, это не вариант, т.к. файлов много, да и нельзя предсказать, когда они попадутся.  
    Задача - создать макрос в файле макросов PERSONAL.XLSB, который бы предотвращал вывод назойливого окна с запросом "вы хотите сохранить изменения да/ нет"/ "Want to save your changes to...?" для любых файлов.

    Всего записей: 2975 | Зарегистр. 04-01-2005 | Отправлено: 13:48 06-11-2015
    Klisha



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Коллеги, подскажите плиз.  
    Изрыл весь инет.. не нашел решения, но знаю что где-то видел...
    Имеется книга с адским количеством листов (порядка 150) листы формируются автоматически, в каждом листе может быть таблица в несколько десятков страниц.
    Необходимо одним махом отправлять эту книгу на печать (или любые выделенные листы) и так чтобы каждый лист печатался с колонтитулом "Страница x из y", где y - число страниц в данном листе. Колонтитулы в лист соответствующего содержания вставлены. Вот только при выделении множества листов и отправки их на печать y - общее количество страниц на всех выделенных листах.
    Как решить эту проблему?

    Всего записей: 683 | Зарегистр. 03-10-2001 | Отправлено: 01:34 12-11-2015
    Drean



    БКЗ-210-140Ф
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Прошу помочь с макросом. Мне нужно чтобы все ячейки типа R на каждом следующем листе имели значение +1 от существующего (R[45] , R[39] , R[36] , R[37]). Столбы постоянные на всех листах. Таких листов 200. нужно запустить макрос, чтобы на все листы распространилась такая информация (+1 по строке).  
     
     

    Цитата:
    Sub Макрос6()
    '
    ' Макрос6 Макрос
    '
     
    '
        ActiveCell.FormulaR1C1 = "='Реестр собственников П1'!R[45]C[2]"
        Range("G13").Select
        ActiveCell.FormulaR1C1 = "='Реестр собственников П1'!R[39]C[-3]"
        Range("C16").Select
        ActiveCell.FormulaR1C1 = "='Реестр собственников П1'!R[36]C[2]"
        Range("A15:H15").Select
        ActiveCell.FormulaR1C1 = "='Реестр собственников П1'!R[37]C[5]"
        Range("A16:B16").Select
        Sheets("1 (50)").Select
        ActiveWindow.SmallScroll Down:=-33
        Range("A7:H7").Select
        ActiveCell.FormulaR1C1 = "='Реестр собственников П1'!R[46]C[2]"
        Range("G13").Select
        ActiveCell.FormulaR1C1 = "='Реестр собственников П1'!R[40]C[-3]"
        Range("C16").Select
        ActiveCell.FormulaR1C1 = "='Реестр собственников П1'!R[37]C[2]"
        Range("A15:H15").Select
        ActiveCell.FormulaR1C1 = "='Реестр собственников П1'!R[38]C[5]"
        Range("A16:B16").Select
    End Sub

     
    В этом макросе на двух листах сделано то, что нужно распространить на все 200.

    Всего записей: 1993 | Зарегистр. 13-05-2003 | Отправлено: 18:08 23-11-2015
    KDPoid



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    В вашем макросе заполнение текущего листа, потом переключение на лист "1 (50)" и заполнение его.
     
    Есть какая-то логика в наименовании или расположении листов ?
     
    Можно утверждать, что "Реестр собственников П1" - всегда первый лист ?
     
    200 листов, которые надо заполнить - это листы со второго по 201-й или их нужно идентифицировать по имени ?
     
    Добавлено:
    Если все мои предположения верны, то вот:

    Код:
     
    Sub qweqwe()
      For i = 2 To 201 ' Цикл по листам. Все 200 должны быть.
        Application.Sheets(i).Range("A7:H7").FormulaR1C1 = "=''Реестр собственников П1'!R[" + CStr(43 + i) + "]C[2]"
        Application.Sheets(i).Range("G13").FormulaR1C1 = "=''Реестр собственников П1'!R[" + CStr(37 + i) + "]C[-3]"
        Application.Sheets(i).Range("C16").FormulaR1C1 = "=''Реестр собственников П1'!R[" + CStr(34 + i) + "]C[2]"
        Application.Sheets(i).Range("A15:H15").FormulaR1C1 = "=''Реестр собственников П1'!R[" + CStr(35 + i) + "]C[5]"
      Next i
    End Sub
     

    Всего записей: 404 | Зарегистр. 08-08-2006 | Отправлено: 15:34 25-11-2015
    Fsp050

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите, пожалуйста на VBA написать один скрипт, который генерирует значения по определенным условиям:
    Например
    Пусть есть переменные и их значения a,b,c
    пол X1,X2,X3
      м    a   a    a
      ж    b   b    b
      ж    c   c    c
    Нужно сгенирировать значения, но так, чтобы соблюдались пропорции только в случайном порядке:
    например 30% мужчин в переменной X1 поставили ответ а, 40% мужчин поставили ответ b и  ещё 30% мужчин поставили ответ с
    при этом
    20% женщин в переменной X1 поставили ответ а, 65% женщин поставили ответ b и  ещё  25% женщин поставили ответ с
    Аналогично и с другими переменными, их может быть несколько.
     
    Надо просто чтобы в самом годе было написано
    пол=200 человек
    переменная x1, пусть имеет пять градаций а,б,в,г,Д
    градация а=5%мужчин, 25%женищин.  
    градация б=10% мужчин и 45% женщин
    ...
     
    Помогите, плиз такое сделать.

    Всего записей: 361 | Зарегистр. 02-04-2011 | Отправлено: 18:27 27-11-2015
    lsd11



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    уважаемые гуру, есть проблема.
    существует некий массив данных вида
    http://s020.radikal.ru/i717/1512/3d/1cbb18cd6037.jpg
    В котором периодически дублируются строки, если контрагент купил что-то другого цвета или иного свойства.
    Может быть и 3-4 таких строки, теоретически.
    Т.е. продажи суммируются, данные дублируются но в поле цвет стоит имя доп.цвета.
    Задача:
    имя доп.цвета (или другого доп.свойства) записать в новое поле основной строки, можно через какой-то разделитель, дубликаты строчки удалить.
    Как почистить массив максимально автоматизировано, чтобы максимально без человеческого фактора? Всю голову себе сломал.

    Всего записей: 146 | Зарегистр. 29-08-2007 | Отправлено: 10:55 03-12-2015 | Исправлено: lsd11, 10:57 03-12-2015
    DJMC



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    подскажите можно ли сделать из строк (их свыше 1000) фильтрацию по каждому событию из 15? :
     

    Цитата:
    50;1-(1);2-(1);3-(1);4-(1);5-(1);6-(1);7-(X);8-(1);9-(1);10-(X);11-(1);12-(X);13-(2);14-(1);15-(1).
    50;1-(1);2-(1);3-(1);4-(1);5-(1);6-(1);7-(X);8-(1);9-(1);10-(X);11-(2);12-(2);13-(2);14-(1);15-(1).

    Всего записей: 12237 | Зарегистр. 26-09-2005 | Отправлено: 13:58 04-12-2015
    KDPoid



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lsd11, волшебный макрос квекве спасёт тебя

    Код:
     
    Sub qweqwe()
      i = 3 ' Начинаем с третьей строки. В первой заголовки, а второй не с чем совпадать.
      While ActiveSheet.Range("A" + CStr(i)) <> "" ' Проверяем строки, пока в первом столбце что-то есть
        If ActiveSheet.Range("A" + CStr(i)) = ActiveSheet.Range("A" + CStr(i - 1)) Then ' Если значение столбца A совпадает со строкой выше
          ActiveSheet.Range("G" + CStr(i - 1)) = ActiveSheet.Range("G" + CStr(i - 1)) + "/" + ActiveSheet.Range("G" + CStr(i)) ' Добавим значение столбца G наверх через разделитель
          Rows(i).EntireRow.Delete ' удалим текущую строку
        Else
          i = i + 1 ' Если не совпало, переходим к следующей строке
        End If
      Wend
    End Sub
     

    Как видно из кода, макрос работает с активным листом.

    Всего записей: 404 | Зарегистр. 08-08-2006 | Отправлено: 14:46 08-12-2015 | Исправлено: KDPoid, 14:49 08-12-2015
    lsd11



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    KDPoid,
    спасибо огромное!
    Буду пользоваться

    Всего записей: 146 | Зарегистр. 29-08-2007 | Отправлено: 08:56 09-12-2015
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 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 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Excel VBA (часть 3)


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru