Всем добрый день! Поиск по форуму и в гугле не принес результата, посему обращаюсь через новую тему с просьбой помочь. Суть проблемы: написал макрос (записью)))) для отчета, в котором дополнение происходит каждый день по 2 столбца, соответственно выбор нужного столбца для заполнения данными сделан через запрос от пользователя InputBox. С вышеописанным проблем не возникло, на переменный столбец ссылался через Cell(7, n) и т.п. Однако есть диаграммы и таблица к ним, так вот в таблицы требуется вставлять формулы-ссылки на другой лист и в адресе необходимо указать столбец через переменную (чтобы все формулы автоматом меняли адрес на нужный) и это у меня никак не получается...вот отрывок из макроса (с которым у меня возникла сложность):
[vba]
Код
Range("B4").Select ActiveCell.Formula = "='Отчет транзит!AO32" 'собственно столбец должен быть выражен моей переменной n (допустим AQ) Range("B4").Select Selection.AutoFill Destination:=Range("B4:B5")
[/vba]
было множество попыток разобраться самому, но максимум у меня получилось записать в ячейку текст: Отчет транзит!'AQ'32, естесственно эта запись как формула не работает(((
Прошу помощи, можно пинать, т.к. еще учусь. Файл-пример обрезан по максимуму от первоначального...интересующая меня часть неработающего макроса:
[vba]
Код
Sub ПростойТС() ' ' ' Application.Calculation = xlAutomatic
Dim n As String n = InputBox("Введите столбец для заполнения данными:", "Запрос")
Всем добрый день! Поиск по форуму и в гугле не принес результата, посему обращаюсь через новую тему с просьбой помочь. Суть проблемы: написал макрос (записью)))) для отчета, в котором дополнение происходит каждый день по 2 столбца, соответственно выбор нужного столбца для заполнения данными сделан через запрос от пользователя InputBox. С вышеописанным проблем не возникло, на переменный столбец ссылался через Cell(7, n) и т.п. Однако есть диаграммы и таблица к ним, так вот в таблицы требуется вставлять формулы-ссылки на другой лист и в адресе необходимо указать столбец через переменную (чтобы все формулы автоматом меняли адрес на нужный) и это у меня никак не получается...вот отрывок из макроса (с которым у меня возникла сложность):
[vba]
Код
Range("B4").Select ActiveCell.Formula = "='Отчет транзит!AO32" 'собственно столбец должен быть выражен моей переменной n (допустим AQ) Range("B4").Select Selection.AutoFill Destination:=Range("B4:B5")
[/vba]
было множество попыток разобраться самому, но максимум у меня получилось записать в ячейку текст: Отчет транзит!'AQ'32, естесственно эта запись как формула не работает(((
Прошу помощи, можно пинать, т.к. еще учусь. Файл-пример обрезан по максимуму от первоначального...интересующая меня часть неработающего макроса:
[vba]
Код
Sub ПростойТС() ' ' ' Application.Calculation = xlAutomatic
Dim n As String n = InputBox("Введите столбец для заполнения данными:", "Запрос")
Прочитайте Правила форума Оформите код тегами (кнопка # в режиме правки поста)
И примерчик порасширенней как-то сделайте, что у Вас там по одному столбцу? Не совсем ясно что нужно получить Впрочем не, вроде ясно. Вы заполнение далаете последовательно по столбцам? В следующий пустой справа?
Прочитайте Правила форума Оформите код тегами (кнопка # в режиме правки поста)
И примерчик порасширенней как-то сделайте, что у Вас там по одному столбцу? Не совсем ясно что нужно получить Впрочем не, вроде ясно. Вы заполнение далаете последовательно по столбцам? В следующий пустой справа?_Boroda_
Sub ПростойТС() Dim n As String n = InputBox("Введите столбец для заполнения данными:", "Запрос") With Sheets("Диаграмма транзит") .UsedRange.EntireColumn.Hidden = False .Range("B4").Formula = "='Отчет транзит'!" & n & "6" 'вместо D должно быть Е (переменная n) .Range("B4").AutoFill Range("B4:B5") End With End Sub
[/vba]А теги надо поставить
Саш, привет. Кажется ТС надо это: [vba]
Код
Sub ПростойТС() Dim n As String n = InputBox("Введите столбец для заполнения данными:", "Запрос") With Sheets("Диаграмма транзит") .UsedRange.EntireColumn.Hidden = False .Range("B4").Formula = "='Отчет транзит'!" & n & "6" 'вместо D должно быть Е (переменная n) .Range("B4").AutoFill Range("B4:B5") End With End Sub
Это я уже понял. И сделал 2 варианта Макросом (файл _2) [vba]
Код
Sub ПростойТС() Application.Calculation = xlAutomatic Dim n As String n = InputBox("Введите столбец для заполнения данными:", "Запрос") With Sheets("Диаграмма транзит") .Select .Cells.EntireColumn.Hidden = False .Range("B4:B5").FormulaR1C1 = "='Отчет транзит'!R[2]C" & Cells(1, n).Column End With End Sub
[/vba] И формулой (файл _1) тогда макрос вообще не нужен (для ее корректной работы нужно, чтобы в 'Отчет транзит'!$5:$5 значения заполнялись последовательно кроме 3-х первых столбцов. Сколько ячеек в пятой строке заполнено - на столбко ссылка формуле вправо и съедет)
Seriy88, Вы, когда исправляете замечание модератора, то пишите об этом в cледующем посте, мы ж не сидим постоянно в Вашей теме, не мониторим момент исправления
Это я уже понял. И сделал 2 варианта Макросом (файл _2) [vba]
Код
Sub ПростойТС() Application.Calculation = xlAutomatic Dim n As String n = InputBox("Введите столбец для заполнения данными:", "Запрос") With Sheets("Диаграмма транзит") .Select .Cells.EntireColumn.Hidden = False .Range("B4:B5").FormulaR1C1 = "='Отчет транзит'!R[2]C" & Cells(1, n).Column End With End Sub
[/vba] И формулой (файл _1) тогда макрос вообще не нужен (для ее корректной работы нужно, чтобы в 'Отчет транзит'!$5:$5 значения заполнялись последовательно кроме 3-х первых столбцов. Сколько ячеек в пятой строке заполнено - на столбко ссылка формуле вправо и съедет)
Seriy88, Вы, когда исправляете замечание модератора, то пишите об этом в cледующем посте, мы ж не сидим постоянно в Вашей теме, не мониторим момент исправления_Boroda_
Range("B4").Formula = "='Отчет транзит'!" & n & "6"
KukIP, спасибо, однако в таком варианте у меня получался просто текст и все (правда n меняется на значение переменной), но формулы то нет...я конечно еще раз сейчас попробую. Ура!!! Спасибо, все правильно работает.
Но все же, как считаете, почему у меня получалось ='Основа для транзита'!'E'6 в виде текста вместо формулы, а у Вас все в порядке? Мистика...и мои корявые пальцы?)))
Range("B4").Formula = "='Отчет транзит'!" & n & "6"
KukIP, спасибо, однако в таком варианте у меня получался просто текст и все (правда n меняется на значение переменной), но формулы то нет...я конечно еще раз сейчас попробую. Ура!!! Спасибо, все правильно работает.
Но все же, как считаете, почему у меня получалось ='Основа для транзита'!'E'6 в виде текста вместо формулы, а у Вас все в порядке? Мистика...и мои корявые пальцы?)))
Еще вопрос (извиняюсь, что здесь задаю): что можно дописать в макрос, чтобы он пропускал свои ошибки и продолжал дальше выполнять программу? Объясняю: в файле отчета, который мне присылают для дальнейшей обработки может быть 2 варианта одного и того же текста, например "Группа А1" и просто "А1", я хочу составить 2 фрагмента с этими вариациями, чтобы выполнялся или 1й или 2й вариант и макрос при этом не падал в ошибку "невозможно найти такой текст, его просто нет (образно говоря)". Спасибо!
Еще вопрос (извиняюсь, что здесь задаю): что можно дописать в макрос, чтобы он пропускал свои ошибки и продолжал дальше выполнять программу? Объясняю: в файле отчета, который мне присылают для дальнейшей обработки может быть 2 варианта одного и того же текста, например "Группа А1" и просто "А1", я хочу составить 2 фрагмента с этими вариациями, чтобы выполнялся или 1й или 2й вариант и макрос при этом не падал в ошибку "невозможно найти такой текст, его просто нет (образно говоря)". Спасибо!Seriy88