Страницы: 1
RSS
Определить номер константы в VBA
 
Здравствуйте подскажите как определить номер константы  Const AutoFill = ?
НЕ БОГИ ГОРШКИ ОБЖИГАЮТ
 
Непонятен вопрос. AutoFill - это метод. У разных объектов может встречаться. Или это какая-то ваша константа, которую вы в коде задаете? И вы хотите узнать ее номер среди чего? Среди других констант?
Кому решение нужно - тот пример и рисует.
 
по сути вот что происходит, я наверное всем заморочил голову этот макрос пытаюсь впихнуть в VB6. и эта строка не работает без определения константа
Код
xl.ActiveCell.FormulaR1C1 = "=TRIM(RC[-1])"
    xl.Selection.AutoFill Destination:=xl.Range("B1:B340"), Type:=xlFillDefault
Изменено: Дмитрий Дунаев - 28.12.2017 10:29:53
НЕ БОГИ ГОРШКИ ОБЖИГАЮТ
 
Ну, правильно, к диапазону применяется метод AutoFill (автозаполнение). При его применении указываются параметры - куда автозаполнять (Destination) и как (xlFillDefault) (можно же только формулу заполнить, или и формулу, и формат, или только значение и т.д.)
Изменено: Пытливый - 28.12.2017 10:31:31
Кому решение нужно - тот пример и рисует.
 
Цитата
как определить номер константы
В редакторе  VBA  нажать F2 (Object Browser)
В окне поиска набрать AutoFill ,
XlAutoFillType
Выбирая определенный тип, видим константа, например
Const xlFillCopy = 1
Const xlFillDays = 5 и т.д.
 
у меня получилось так  Const AutoFill = 4 но вопроса не решило ошибка таже
НЕ БОГИ ГОРШКИ ОБЖИГАЮТ
 
Const xlFillDefault = 0
 
сообщение ошибки
НЕ БОГИ ГОРШКИ ОБЖИГАЮТ
 
Прикрепите ваш небольшой пример в xls, а не в jpg
 
полный макрос:
Код
xl.ActiveCell.FormulaR1C1 = "=TRIM(RC[-1])"
    xl.Selection.AutoFill Destination:=xl.Range("B1:B340"), Type:=xlFillDefault 'ругается здесь
    xl.Columns("B:B").Select
    xl.Selection.Copy
    xl.Columns("C:C").Select
    xl.Sheets("Лист1").Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    xl.Columns("A:B").Select
    xl.Range("B1").Activate
    xl.Application.CutCopyMode = False
    xl.Selection.Delete Shift:=xlToLeft
    xl.Range("A1").Select
    xl.Columns("A:A").ColumnWidth = 40
Изменено: Дмитрий Дунаев - 28.12.2017 11:02:44
НЕ БОГИ ГОРШКИ ОБЖИГАЮТ
 
Ребята все получилось как то так просто вставил строку
Код
xl.Sheets("Лист1").Range("B1").Select
НЕ БОГИ ГОРШКИ ОБЖИГАЮТ
 
Цитата
полный макрос:
как бы не так. из этого полного макроса совершенно не понятно, кто такой Х1???
судя по многим строчкам:
xl.Columns("B:B")...
xl.Range("B1")...
и пр.,  Х1 - это лист
но вот это:
xl.Sheets("Лист1")...
зачеркивает предыдущее предположение и наводит на мысль что Х1 - это книга

как могут работать такие 3 строки подряд - загадка? (точнее загадка, что все-таки скрывается за Х1???)
Код
    xl.Columns("C:C").Select
    xl.Sheets("Лист1").Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    xl.Columns("A:B").Select
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, xl - application :) Введи
Код
Dim xl As Application
xl.
и в выпадающем списке будет и ActiveCell, и Columns, и Sheets...
 
господа! это xl(эксел),  код работает в VB6  
Изменено: Дмитрий Дунаев - 28.12.2017 12:09:32
НЕ БОГИ ГОРШКИ ОБЖИГАЮТ
 
Леша, спасибо!
однако, вот это насторожило:
Код
xl.Application
хотя...
и если я НИКОГДА не стану обращаться к xl.Application, зная что xl - это Excel, это не значит - что такие обращения не могут встречаться в чьих-то кодах
Изменено: Ігор Гончаренко - 28.12.2017 12:39:04
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Дмитрий Дунаев, попробуйте заменить код из #10 на это. Лист1 не обязан быть активным листом.
Код
    With xl.Sheets("Лист1")
      With .Range("A1", .Cells(.Rows.Count, "A").End(xlUp))
        .Value = xl.Evaluate("INDEX(TRIM(" & .Address(, , xl.ReferenceStyle, True) & "),)")
        .EntireColumn.ColumnWidth = 40
      End With
    End With
Страницы: 1
Читают тему
Наверх