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

Вход

Регистрация

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

 

= Мир MS Excel/Вставка столбцов через интервал - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вставка столбцов через интервал (Макросы/Sub)
Вставка столбцов через интервал
IgorStorm Дата: Воскресенье, 14.02.2016, 00:35 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 1 ±
Замечаний: 0% ±

Excel 2007
Всем добрый вечер. Пытаюсь решить такую задачу- пишу универсальный код для вставки пустых столбцов через интервал, с указанным шагом, указанное число раз. Через одни вставляет нормально, но когда начинаешь указывать более крупный шаг, или число вставляемых столбцов больше одного - все начинает работать не корректно. Строки я победил довольно быстро, но там использовал другой метод, сюда не подходит. Здесь никак не добьюсь результата. Вот код:

[vba]
Код
kv = T5.Value ' кол-во добавляемых пустых столбцов
ks = T6.Value ' интервал
k1 = T7.Value ' столбец старта, откуда начинаем
k2 = T8.Value ' кол-во вставок
For i = k1 To (ks * k2) Step ks
If Cells(1, i) <> "" Then
Cells(1, i).EntireColumn.Insert
If kv > 1 Then
For x = k1 To (ks * k2) Step ks
Cells(1, x).EntireColumn.Insert
Next x
End If
End If
Next i
[/vba]
 
Ответить
СообщениеВсем добрый вечер. Пытаюсь решить такую задачу- пишу универсальный код для вставки пустых столбцов через интервал, с указанным шагом, указанное число раз. Через одни вставляет нормально, но когда начинаешь указывать более крупный шаг, или число вставляемых столбцов больше одного - все начинает работать не корректно. Строки я победил довольно быстро, но там использовал другой метод, сюда не подходит. Здесь никак не добьюсь результата. Вот код:

[vba]
Код
kv = T5.Value ' кол-во добавляемых пустых столбцов
ks = T6.Value ' интервал
k1 = T7.Value ' столбец старта, откуда начинаем
k2 = T8.Value ' кол-во вставок
For i = k1 To (ks * k2) Step ks
If Cells(1, i) <> "" Then
Cells(1, i).EntireColumn.Insert
If kv > 1 Then
For x = k1 To (ks * k2) Step ks
Cells(1, x).EntireColumn.Insert
Next x
End If
End If
Next i
[/vba]

Автор - IgorStorm
Дата добавления - 14.02.2016 в 00:35
StoTisteg Дата: Воскресенье, 14.02.2016, 01:54 | Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
Вы бы приложили файлик с примером, что имеем и что из этого должно получаться в итоге. А то ни медитация на ТЗ, ни вдумчивое курение кода не помогает понять, что такое "интервал", к примеру. Ну напишут Вам рабочий код, а как понять, что он делает то, что нужно, а не то, что он сам хочет или что автор кода не так понял? :D


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
СообщениеВы бы приложили файлик с примером, что имеем и что из этого должно получаться в итоге. А то ни медитация на ТЗ, ни вдумчивое курение кода не помогает понять, что такое "интервал", к примеру. Ну напишут Вам рабочий код, а как понять, что он делает то, что нужно, а не то, что он сам хочет или что автор кода не так понял? :D

Автор - StoTisteg
Дата добавления - 14.02.2016 в 01:54
IgorStorm Дата: Воскресенье, 14.02.2016, 08:01 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 1 ±
Замечаний: 0% ±

Excel 2007
Пытаюсь написать нечто универсальное. Файл примера вложил. Скажет нужно после столбца наценка вставить два пустых столбца для расчета % маржи или выполения, но не за все месяцы,
а только за первые 2. Или нужно добавить всего одни столбец, но за все месяцы. В след. раз может в массиве может быть столбец % маржи, также будет нужно вставлять через уже существующие столбцы новые пустые для расчета др. показателей. Т.е. шаг увеличится на одни. Возможно считать, а значит и вставлять нужно не с первого месяца, а со второго и т.д.

Код там на InputBox перенес, но он не работает :(
К сообщению приложен файл: 2845279.xlsb (18.4 Kb)
 
Ответить
СообщениеПытаюсь написать нечто универсальное. Файл примера вложил. Скажет нужно после столбца наценка вставить два пустых столбца для расчета % маржи или выполения, но не за все месяцы,
а только за первые 2. Или нужно добавить всего одни столбец, но за все месяцы. В след. раз может в массиве может быть столбец % маржи, также будет нужно вставлять через уже существующие столбцы новые пустые для расчета др. показателей. Т.е. шаг увеличится на одни. Возможно считать, а значит и вставлять нужно не с первого месяца, а со второго и т.д.

Код там на InputBox перенес, но он не работает :(

Автор - IgorStorm
Дата добавления - 14.02.2016 в 08:01
KuklP Дата: Воскресенье, 14.02.2016, 08:36 | Сообщение № 4
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Мож так?
[vba]
Код
Sub InsCol()
    kv = Val(InputBox("кол-во добавляемых пустых столбцов", , 2))
    ks = Val(InputBox("интервал/шаг", , 3))
    k1 = Val(InputBox("столбец старта, откуда начинаем", , 5))
    k2 = Val(InputBox("кол-во вставок", , 2))
    For i = (ks * (k2 - 1)) + k1 To k1 Step -ks
        Columns(i).Resize(, kv).Insert
    Next i
End Sub
[/vba]
К сообщению приложен файл: _2845279.xls (51.5 Kb)


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеМож так?
[vba]
Код
Sub InsCol()
    kv = Val(InputBox("кол-во добавляемых пустых столбцов", , 2))
    ks = Val(InputBox("интервал/шаг", , 3))
    k1 = Val(InputBox("столбец старта, откуда начинаем", , 5))
    k2 = Val(InputBox("кол-во вставок", , 2))
    For i = (ks * (k2 - 1)) + k1 To k1 Step -ks
        Columns(i).Resize(, kv).Insert
    Next i
End Sub
[/vba]

Автор - KuklP
Дата добавления - 14.02.2016 в 08:36
IgorStorm Дата: Воскресенье, 14.02.2016, 09:23 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 1 ±
Замечаний: 0% ±

Excel 2007
Кажется, оно. Спасибо вам. yes Все таки цикл нужен был с конца, как я догадывался первоначально. так проще.
 
Ответить
СообщениеКажется, оно. Спасибо вам. yes Все таки цикл нужен был с конца, как я догадывался первоначально. так проще.

Автор - IgorStorm
Дата добавления - 14.02.2016 в 09:23
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вставка столбцов через интервал (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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