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

Вход

Регистрация

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

 

= Мир MS Excel/Ссылка на ячейку при столбце, выраженному переменной - Мир MS Excel

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

Excel 2007
Всем добрый день!
Поиск по форуму и в гугле не принес результата, посему обращаюсь через новую тему с просьбой помочь.
Суть проблемы: написал макрос (записью)))) для отчета, в котором дополнение происходит каждый день по 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("Введите столбец для заполнения данными:", "Запрос")

Sheets("Диаграмма транзит").Select
Cells.Select
Range("D1").Activate
Selection.EntireColumn.Hidden = False
Range("K36").Select
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
Range("B4").Select
ActiveCell.Formula = "='Отчет транзит'!D6"
Range("B4").Select
Selection.AutoFill Destination:=Range("B4:B5")
Range("B4:B5").Select

End Sub
[/vba]

Всем заранее спасибо!
К сообщению приложен файл: 9379103.xls (37.0 Kb)


Сообщение отредактировал Seriy88 - Среда, 20.09.2017, 11:17
 
Ответить
СообщениеВсем добрый день!
Поиск по форуму и в гугле не принес результата, посему обращаюсь через новую тему с просьбой помочь.
Суть проблемы: написал макрос (записью)))) для отчета, в котором дополнение происходит каждый день по 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("Введите столбец для заполнения данными:", "Запрос")

Sheets("Диаграмма транзит").Select
Cells.Select
Range("D1").Activate
Selection.EntireColumn.Hidden = False
Range("K36").Select
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
Range("B4").Select
ActiveCell.Formula = "='Отчет транзит'!D6"
Range("B4").Select
Selection.AutoFill Destination:=Range("B4:B5")
Range("B4:B5").Select

End Sub
[/vba]

Всем заранее спасибо!

Автор - Seriy88
Дата добавления - 20.09.2017 в 10:52
_Boroda_ Дата: Среда, 20.09.2017, 10:58 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Прочитайте Правила форума
Оформите код тегами (кнопка # в режиме правки поста)

И примерчик порасширенней как-то сделайте, что у Вас там по одному столбцу? Не совсем ясно что нужно получить
Впрочем не, вроде ясно. Вы заполнение далаете последовательно по столбцам? В следующий пустой справа?


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеПрочитайте Правила форума
Оформите код тегами (кнопка # в режиме правки поста)

И примерчик порасширенней как-то сделайте, что у Вас там по одному столбцу? Не совсем ясно что нужно получить
Впрочем не, вроде ясно. Вы заполнение далаете последовательно по столбцам? В следующий пустой справа?

Автор - _Boroda_
Дата добавления - 20.09.2017 в 10:58
KuklP Дата: Среда, 20.09.2017, 11:14 | Сообщение № 3
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Саш, привет. Кажется ТС надо это:
[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
[/vba]А теги надо поставить :)


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеСаш, привет. Кажется ТС надо это:
[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
[/vba]А теги надо поставить :)

Автор - KuklP
Дата добавления - 20.09.2017 в 11:14
_Boroda_ Дата: Среда, 20.09.2017, 11:25 | Сообщение № 4
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Это я уже понял. И сделал 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-х первых столбцов. Сколько ячеек в пятой строке заполнено - на столбко ссылка формуле вправо и съедет)
Код
=ИНДЕКС('Отчет транзит'!6:6;СЧЁТЗ('Отчет транзит'!$5:$5)+3)

Seriy88, Вы, когда исправляете замечание модератора, то пишите об этом в cледующем посте, мы ж не сидим постоянно в Вашей теме, не мониторим момент исправления
К сообщению приложен файл: 9379103_2.xls (43.0 Kb) · 9379103_1.xls (41.0 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЭто я уже понял. И сделал 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-х первых столбцов. Сколько ячеек в пятой строке заполнено - на столбко ссылка формуле вправо и съедет)
Код
=ИНДЕКС('Отчет транзит'!6:6;СЧЁТЗ('Отчет транзит'!$5:$5)+3)

Seriy88, Вы, когда исправляете замечание модератора, то пишите об этом в cледующем посте, мы ж не сидим постоянно в Вашей теме, не мониторим момент исправления

Автор - _Boroda_
Дата добавления - 20.09.2017 в 11:25
Seriy88 Дата: Среда, 20.09.2017, 11:27 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Вы заполнение далаете последовательно по столбцам? В следующий пустой справа?

Boroda, да, я заполняю каждый раз следующий столбец справа, за исключением дат, выпадающих на выходные (пропускаю сразу 4 столбца).

Range("B4").Formula = "='Отчет транзит'!" & n & "6"

KukIP, спасибо, однако в таком варианте у меня получался просто текст и все (правда n меняется на значение переменной), но формулы то нет...я конечно еще раз сейчас попробую.
Ура!!! Спасибо, все правильно работает.

Но все же, как считаете, почему у меня получалось ='Основа для транзита'!'E'6 в виде текста вместо формулы, а у Вас все в порядке? Мистика...и мои корявые пальцы?)))

ПС: Правильно поправил свое сообщение?
 
Ответить
Сообщение
Вы заполнение далаете последовательно по столбцам? В следующий пустой справа?

Boroda, да, я заполняю каждый раз следующий столбец справа, за исключением дат, выпадающих на выходные (пропускаю сразу 4 столбца).

Range("B4").Formula = "='Отчет транзит'!" & n & "6"

KukIP, спасибо, однако в таком варианте у меня получался просто текст и все (правда n меняется на значение переменной), но формулы то нет...я конечно еще раз сейчас попробую.
Ура!!! Спасибо, все правильно работает.

Но все же, как считаете, почему у меня получалось ='Основа для транзита'!'E'6 в виде текста вместо формулы, а у Вас все в порядке? Мистика...и мои корявые пальцы?)))

ПС: Правильно поправил свое сообщение?

Автор - Seriy88
Дата добавления - 20.09.2017 в 11:27
Seriy88 Дата: Среда, 20.09.2017, 11:31 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
И формулой (файл _1) тогда макрос вообще не нужен
[Перевод / Translate]
=ИНДЕКС('Отчет транзит'!6:6;СЧЁТЗ('Отчет транзит'!$5:$5)+3)

Этой формулой раньше не пользовался, изучу!
 
Ответить
Сообщение
И формулой (файл _1) тогда макрос вообще не нужен
[Перевод / Translate]
=ИНДЕКС('Отчет транзит'!6:6;СЧЁТЗ('Отчет транзит'!$5:$5)+3)

Этой формулой раньше не пользовался, изучу!

Автор - Seriy88
Дата добавления - 20.09.2017 в 11:31
Seriy88 Дата: Среда, 20.09.2017, 12:35 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Саш, привет. Кажется ТС надо это:

Я надеюсь, это не ругательство?
Всем большое спасибо!
 
Ответить
Сообщение
Саш, привет. Кажется ТС надо это:

Я надеюсь, это не ругательство?
Всем большое спасибо!

Автор - Seriy88
Дата добавления - 20.09.2017 в 12:35
KuklP Дата: Среда, 20.09.2017, 12:37 | Сообщение № 8
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
это не ругательство
это принятое сокращение - топикстартер(создатель темы).


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
Сообщение
это не ругательство
это принятое сокращение - топикстартер(создатель темы).

Автор - KuklP
Дата добавления - 20.09.2017 в 12:37
Seriy88 Дата: Среда, 20.09.2017, 12:44 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Еще вопрос (извиняюсь, что здесь задаю): что можно дописать в макрос, чтобы он пропускал свои ошибки и продолжал дальше выполнять программу? Объясняю: в файле отчета, который мне присылают для дальнейшей обработки может быть 2 варианта одного и того же текста, например "Группа А1" и просто "А1", я хочу составить 2 фрагмента с этими вариациями, чтобы выполнялся или 1й или 2й вариант и макрос при этом не падал в ошибку "невозможно найти такой текст, его просто нет (образно говоря)".
Спасибо!
 
Ответить
СообщениеЕще вопрос (извиняюсь, что здесь задаю): что можно дописать в макрос, чтобы он пропускал свои ошибки и продолжал дальше выполнять программу? Объясняю: в файле отчета, который мне присылают для дальнейшей обработки может быть 2 варианта одного и того же текста, например "Группа А1" и просто "А1", я хочу составить 2 фрагмента с этими вариациями, чтобы выполнялся или 1й или 2й вариант и макрос при этом не падал в ошибку "невозможно найти такой текст, его просто нет (образно говоря)".
Спасибо!

Автор - Seriy88
Дата добавления - 20.09.2017 в 12:44
_Boroda_ Дата: Среда, 20.09.2017, 12:51 | Сообщение № 10
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Я Вам писал
Прочитайте Правила форума
? Писал. Вы не вняли.
Нарушение п.4 Правил форума
Вам замечание


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЯ Вам писал
Прочитайте Правила форума
? Писал. Вы не вняли.
Нарушение п.4 Правил форума
Вам замечание

Автор - _Boroda_
Дата добавления - 20.09.2017 в 12:51
Seriy88 Дата: Среда, 20.09.2017, 13:41 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Писал. Вы не вняли.
Нарушение п.4 Правил форума
Вам замечание

Убедили, попробую еще поискать!
 
Ответить
Сообщение
Писал. Вы не вняли.
Нарушение п.4 Правил форума
Вам замечание

Убедили, попробую еще поискать!

Автор - Seriy88
Дата добавления - 20.09.2017 в 13:41
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Ссылка на ячейку при столбце, выраженному переменной (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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