2016-08-09 3 views
-3

Привет, ребята, мне нужна помощь в создании сценария vba, который автоматизирует процесс создания имени с помощью инструмента управления именами в Excel, чтобы создать функцию смещения для диапазона диаграммы. У меня есть 100 файлов excel, и я уже создал цикл, который проходит через них. Я просто не знаю, какую функцию использовать для создания имени и манипуляции с диапазоном диаграмм. См. Ниже код Sudo, который я пытаюсь создать.Excel Vba как использовать функцию имени для определения формулы смещения

Хотя файл доступен в папке

Открыть файл

Перейти на вкладку 1

Перейти к таблице 1

менеджер открыт имя

Создать новое имя, которое подсчитывает количество строк в колонке динамически

Создать новое имя, которое подсчитывает количество строк в колонке б динамически

Установите два имени в качестве диапазонов для существующей диаграммы называется диаграмма 1

Перейти к следующему файлу

В основном то, что я хочу сделать, это точно так же, как это видео https://m.youtube.com/watch?v=1VnITD0rU1A

Edit: Как и другие предложили, чтобы я решил попробовать записи макроса, и я получил это:

ActiveSheet.Shapes.Range(Array("TextBox 3")).Select 
Selection.ShapeRange.IncrementLeft -0.8822834646 
Selection.ShapeRange.IncrementTop 275.2940944882 
Range("O18").Select 
ActiveWorkbook.Names.Add Name:="TimeStamp", RefersToR1C1:= _ 
    "=OFFSET('KPI 2'!R6C16,,,COUNT('KPI 2'!C16),1)" 
ActiveWorkbook.Names("TimeStamp").Comment = "" 
ActiveWorkbook.Names.Add Name:="RunTime", RefersToR1C1:= _ 
    "=OFFSET('KPI 2'!R6C17,,,COUNT('KPI 2'!C17),1)" 
ActiveWorkbook.Names("RunTime").Comment = "" 
ActiveWorkbook.Names.Add Name:="AverageRunTime", RefersToR1C1:= _ 
    "=OFFSET('KPI 2'!R6C18,,,COUNT('KPI 2'!C18),1)" 
ActiveWorkbook.Names("AverageRunTime").Comment = "" 
ActiveWindow.SmallScroll ToRight:=8 
ActiveSheet.ChartObjects("Chart 5").Activate 
ActiveSheet.ChartObjects("Chart 5").Activate 
ActiveChart.SeriesCollection(1).XValues = "=='31-G-1A.xlsm'!TimeStamp" 
ActiveChart.SeriesCollection(1).Values = "=='31-G-1A.xlsm'!RunTime" 
ActiveWindow.SmallScroll Down:=24 
ActiveSheet.ChartObjects("Chart 2").Activate 
ActiveSheet.ChartObjects("Chart 2").Activate 
ActiveChart.SeriesCollection(1).XValues = "=='31-G-1A.xlsm'!TimeStamp" 
ActiveChart.SeriesCollection(1).Values = "=='31-G-1A.xlsm'!AverageRunTime" 
ActiveWindow.SmallScroll Down:=30 

Формула имен работает, но я получаю сообщение об ошибке при попытке установить значения x и y для диаграммы. (Файл называется '31 -G-1A.xlsm ')

+0

Просто пробовал, но получаю сообщение об ошибке при попытке обновить таблицу – user3138464

ответ

0

При записи макроса он будет добавить имя в ActiveWorkbook.Names с использованием нотации R1C1»

ActiveWorkbook.Names.Add Name:="Example1", RefersToR1C1:="=OFFSET(Sheet1!R1C1,1,0,COUNTA(Sheet1!C1),COUNTA(Sheet1!R1))"

Но вы можно также использовать RefersTo добавить имя, используя обозначения xlA1:

ActiveWorkbook.Names.Add Name:="Example2", RefersTo:="=OFFSET(A1,1,0,COUNTA(A:A),COUNTA(1:1))"

+0

Эй, я попытался записи его, но я получаю сообщение об ошибке при попытке т o используйте имя для значений x и y. См. Обновленный код. – user3138464

+0

Область имен - это рабочая книга, а не рабочий лист. Попробуйте удалить ссылку «Worksheet» '31 -G-1A.xlsm '!'. ActiveChart.SeriesCollection (1) .XValues ​​= "== '31-G-1A.xlsm'! TimeStamp" 'to' ActiveChart.SeriesCollection (1) .XValues ​​= "== TimeStamp" ' –

+0

Эй, я изменился на ActiveChart.SeriesCollection (1) .XValues ​​= "== TimeStamp", но я получаю сообщение об ошибке: Определенная пользователем или объектная ошибка – user3138464