Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2016, 02:02   #1
Lama Under Cover
Пользователь
 
Аватар для Lama Under Cover
 
Регистрация: 15.08.2016
Сообщений: 32
Радость Помогите с заполнением листа =/

Здравствуйте!

Имеется блок данных в диапазоне F3:F13. При обновлении значений листа данный блок копируется в ближайший незанятый справа, и так до конца листа.

Как сделать так, чтобы при заполнении листа до конца листа (столбца XFD) данный блок продолжал копироваться, начиная со следующей пустой строки (F14, шаг 11).

Код:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim LastFreeCol As Long
     
   Application.EnableEvents = False
   Application.DisplayStatusBar = False
   Application.DisplayAlerts = False
   Application.ScreenUpdating = False
   
   Application.Calculation = xlCalculationAutomatic
      
   Range("F3:F13").Select
   Selection.Copy
         LastFreeCol = Cells(3, Columns.Count).End(xlToLeft).Column + 1
     Cells(3, LastFreeCol).Select
     
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        
    Application.CutCopyMode = False
    
        
    Application.EnableEvents = True
    Application.DisplayStatusBar = True
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub
P.S. Сам тестировал цикл For i = 3 to 104856 Step 11(где i - номер строки) и внутри While LastCol < последний столбец, однако выдавал ошибку.

Файл приложен
Вложения
Тип файла: rar MDI import test.rar (31.8 Кб, 8 просмотров)
http://imageshack.com/a/img922/5707/6yizfA.gif
Lama Under Cover вне форума Ответить с цитированием
Старый 05.11.2016, 14:47   #2
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Код:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim r&, c&
    Application.EnableEvents = False
    r = 3 + 11 * ((Cells(Rows.Count, 6).End(xlUp).Row - 3) \ 11)
    With Cells(r, Columns.Count)
        If .Value = Empty Then
            c = .End(xlToLeft).Column + 1
        Else
            r = r + 11: c = 6
        End If
   End With
   [f3:f13].Copy Cells(r, c)
    Application.EnableEvents = True
End Sub
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 07.11.2016, 20:58   #3
Lama Under Cover
Пользователь
 
Аватар для Lama Under Cover
 
Регистрация: 15.08.2016
Сообщений: 32
По умолчанию

Чудно было бы еще два момента понять:
1) не могу понять принцип работы
Цитата:
Сообщение от Step_UA Посмотреть сообщение
Код:
r = 3 + 11 * ((Cells(Rows.Count, 6).End(xlUp).Row - 3) \ 11)b
;
2) а также то, как изменить метод копирования с копирования формул до копирования значений в Вашем примере.

Но программа работает. Спасибо!


P.S. Но при этом. Увы. Испытал макрос, вроде бы работать должен, но при обновлении листа через программку почему то не робит..

При этом в случае, когда делаю вручную - то все ок.
http://imageshack.com/a/img922/5707/6yizfA.gif

Последний раз редактировалось Lama Under Cover; 07.11.2016 в 21:28.
Lama Under Cover вне форума Ответить с цитированием
Старый 07.11.2016, 21:32   #4
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от Lama Under Cover Посмотреть сообщение
P.S. Но при этом. Увы. Испытал макрос, вроде бы работать должен, но при обновлении листа через программку почему то не робит..
На форуме была обработка изменений через DDE.
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 07.11.2016, 21:50   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Цитата:
Сообщение от Lama Under Cover Посмотреть сообщение
P.S. Но при этом. Увы. Испытал макрос, вроде бы работать должен, но при обновлении листа через программку почему то не робит..

При этом в случае, когда делаю вручную - то все ок.
Так ведь ни слова не сказали что обновлять будете не вручную.
С DDE - отдельная песня. Можно отслеживать пересчёт завязанной формулы, или изменение связанного текстбокса/листбокса.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 08.11.2016, 11:49   #6
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Цитата:
Сообщение от Lama Under Cover Посмотреть сообщение
не могу понять принцип работы
Находит номер строки для копирования: 3, 14, 25 ....
Цитата:
как изменить метод копирования с копирования формул до копирования значений
Код:
' Заменить следующую строку
[f3:f13].Copy Cells(r, c)
' 1 вариант
Cells(r, c).resize(11).value=[f3:f13].value
' 2 вариант
[f3:f13].Copy
Cells(r, c).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 08.11.2016, 20:31   #7
Lama Under Cover
Пользователь
 
Аватар для Lama Under Cover
 
Регистрация: 15.08.2016
Сообщений: 32
По умолчанию

Задача решена на 90%.

Нашел где-то через текст бокс, вывод через DDE работает, однако требуется вставить время каждого изменения.

При вставке ТДАТА() через сцепку в текстбокс макрос записи изменений не работает. Добавил Тдата отдельно, однако по какой то причине код, который должен сохранять значения времени в соседний столбец в виде значений а не формул - не работает.

Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    Range("C2:C100000").Select
    Selection.Copy
    Range("D2").Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
    xlNone, SkipBlanks:=False, Transpose:=False
    
End Sub


Файл прикрепил.
Вложения
Тип файла: rar MDI.rar (2.46 Мб, 15 просмотров)
http://imageshack.com/a/img922/5707/6yizfA.gif

Последний раз редактировалось Lama Under Cover; 09.11.2016 в 10:05.
Lama Under Cover вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
таблица с заполнением полей jhendrix HTML и CSS 1 19.04.2014 15:30
проблема с заполнением массива Freddi Krjuger Общие вопросы C/C++ 0 22.10.2010 18:12
Курсовой на С++. Помогите с заполнением массива из файла wishmaster13 Помощь студентам 28 14.10.2009 11:39
Проблема с заполнением asd48 Помощь студентам 1 21.04.2009 00:21
Помогите с заполнением базы из *.cvs harom SQL, базы данных 0 07.03.2009 22:50