Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Добавить на график горизонтальную линию (порог)
 
Добрый день.

Мне нужно построить график, где одни показатели были бы в виде колонок, а другая одна (1) цифра была бы горизонтальной чертой от начала до конца зоны графика.
Пример на картинке. Но, тут я линию "цель" сделал из двух точек, а мне нужно по одной - просто черта/граница горизонтальная по показателю и чтобы она шла слева на право от начала до конца области графика, т.е. пересекая оба столбца. Уже всё излазил, так и не нашел, как в эксель добавить произвольную горизонтальную линию с соответствующим значением. Можно конечно вручную рисовать, добавляя поверх графика объект "линия", но это изврат.

Заранее спасибо за помощь.
Метод Find не ищет строку, Find с переменным успехом то ищет, то не ищет строку без видимых изменений
 
Добрый день всем.

Возникла проблема с методом Find. Вчера убил два часа, но так и не понял, почему он то работает, то нет. Через Find и Offset я пытаюсь сэмулировать экселевский Vlookup. Есть исходный файл с двумя колонками - в первой список ИНН, во второй - список номеров поставщиков. Макрос в testFile находит ИНН (с этим он прекрасно справляется), а потом используя ИНН должен искать мне номер поставщика. Он то работал вчера, то нет. Когда не работал, я сохранял файл, закрывал, открывал, запускал макрос построчно и по коду следил, что происходит после выполнения каждой строки, и он находил поставщика. Потом закрывал файл, открывал, запускал просто так и он не находил поставщика. Выкладываю файл где ищется ИНН и файл со списком поставщиков (готовый макрос не влезает по максимальному объему файла). Необходимый макрос - Sub PriceListShow(). Ниже интересующий меня блок кода, я не пойму, почему он не работает (уже перебрал все возможные варианты, но он так и не ищет строку).

Я начал грешить на то, что у меня String, а в файле со списком поставщиков формат данных "цифровой", но смена переменной на Double никакого результата не принесла.
Как видите ниже, я перепробовал различные варианты запросов (даже vlookup), но опять таки к какому то очевидному пониманию не пришёл. Надеюсь вы мне поможете и/или подскажете, как улучшить код.
Спасибо.

Код
On Error Resume Next
Dim SupplierINN As String
Dim SupplierBlockStart As String
Dim SupplierBlockEnd As String
SupplierBlockStart = Worksheets("Данные поставщика").Range("A1:C100").Find("*Контак*ормация*поставщика*").Address
SupplierBlockEnd = Worksheets("Данные поставщика").Range("A1:C100").Find("лицо*поставщика*").Address
SupplierINN = Worksheets("Данные поставщика").Range(Worksheets("Данные поставщика").Range(SupplierBlockStart & ":" & SupplierBlockEnd).Find("*ИНН*").Address).Offset(, 1).Value

If SupplierINN = Empty Then
PriceListAuto.Supplier = "НЕТ ИНН"
PriceListAuto.Supplier.BackColor = RGB(254, 230, 61)
PriceListAuto.SupplierLabel = "На вкладке ""Данные поставщика"" не указан ИНН. Уточните ИНН / Введите вручную"
Else

'xSupplier = Workbooks("PrismaTools.xlsm").Worksheets("Suppliers").Range(Range("A:A").Find(SupplierINN, , , xlPart).Address).Offset(, 2).Value
'If xSupplier = "" Then xSupplier = Workbooks("PrismaTools.xlsm").Worksheets("Suppliers").Range(Range("A:A").Find(SupplierINN, , , xlWhole).Address).Offset(, 2).Value
'If xSupplier = "" Then xSupplier = Workbooks("PrismaTools.xlsm").Worksheets("Suppliers").Range(Range("A:A").Find("*" & SupplierINN & "*", , , xlPart).Address).Offset(, 2).Value
'If xSupplier = "" Then xSupplier = Workbooks("PrismaTools.xlsm").Worksheets("Suppliers").Range(Range("A:A").Find("*" & SupplierINN & "*", , , xlWhole).Address).Offset(, 2).Value
If xSupplier = "" Then xSupplier = Workbooks("PrismaTools.xlsm").Worksheets("Suppliers").Application.WorksheetFunction.VLookup(CDbl(SupplierINN), "A:C", 3, 0)

xSupplierName = Workbooks("Suppliers.xlsm").Worksheets("Suppliers").Range(Range("C:C").Find(xSupplier, , , xlPart).Address).Offset(, 1).Value
If xSupplier = "" Then
PriceListAuto.Supplier = "НЕ НАЙДЕН"
PriceListAuto.SupplierLabel = "Поставщик не найден. Проверьте список поставщиков или введите номер вручную"
Else
PriceListAuto.Supplier = xSupplier
PriceListAuto.Supplier.BackColor = RGB(107, 198, 6)
PriceListAuto.SupplierLabel = xSupplierName
End If
End If


Изменено: invirtus - 28.07.2015 10:03:13
VBA Переменные в качестве элементов цикла
 
Добрый день.
Подскажите пожалуйста, если в VBA возможность в качестве элементов для перебора в цикле использовать список переменных?
Иными словами, у меня есть список public переменных (например A, B, C, D), которые могут принимать различные значения.

Обычный цикл (не в синтаксисе VBA) это что-то вроде.
int i;
for (i=1; i < 10; i++)
  {
    do something;
  }
next i;

Можно ли как-то сделать, чтобы i в каждую итерацию цикла принимало значение следующей переменной из списка A, B, C, D?
Заранее спасибо.

Немного дополню.
Мне нужно закрашивать диапазоны, адреса которых получают переменные. Вот можно ли в том месте, где ниже стоит X, с помощью цикла перебирать список переменных, а то мне для каждой переменной сейчас такую конструкцию писать приходится.
Код
With Columns(x).Interior
    .PatternColorIndex = xlAutomatic
    .ThemeColor = xlThemeColorAccent3
    .TintAndShade = 0.399975585192419
    .PatternTintAndShade = 0
End With
Изменено: invirtus - 01.07.2015 20:49:54
With Selection.Interior не работает с переменной
 
Добрый день.
Есть, для примера, такой код. Он работает.

Код
Public Sub colorFill()
'
' colorFill Macro
'
    Columns("C:C").Select
    With Selection.Interior
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent3
        .TintAndShade = 0.399975585192419
        .PatternTintAndShade = 0
    End With
End Sub 
Как только я пытаюсь заменить строку Columns("C:C").Select на Columns(x & ":" & x).Select, у меня выскакивает сообщение об ошибке Compile Error: Expected Function or variable на строке Selection.

Переменная объявлена как Public x As String до самого Sub, значение x берется из формы, которая вызывается до этого кода.
Отдельно в другом модуле код работает, а вот так уже нет.
Код
PriceListAuto.Show
PriceListAuto.MaterialGroup = Split(Range("A1:CZ12").Find("òîâàð*ãð*").Address, "$")(1)
x = PriceListAuto.MaterialGroup
Columns(x & ":" & x).Select
With Selection.Interior
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent3
        .TintAndShade = 0.399975585192419
        .PatternTintAndShade = 0
End With

Не могу понять почему...
Заранее благодарю за помощь.
Изменено: invirtus - 29.06.2015 15:55:08
UserForms Modeless Type Mismatch Error, Ошибка в макросе при изменении параметра формы ShowModal с True на False
 
Добрый день. Такая проблема.
Есть форма с кнопкой и текстовым полем. В текстовое поле заношу индекс столбца (например J), по нажатию кнопки выделяется нужный мне столбец, т.е. J. Т.е. всё работает как надо.

код формы
Код
Private Sub CommandButton1_Click()
a = UserForm1.TextBox1
Unload UserForm1
End Sub

модуль

Код
Public a As String

Sub test()
UserForm1.Show
Columns(a & ":" & a).Select
End Sub

Если меняю свойство формы ShowModal с True на False, то вылезает сообщение об ошибке Run-time error '13': Type Mismatch с указанием на строку Columns(a & ":" & a).Select. Если закомментировать эту строку, то ошибка пропадает, но и функционал тоже. А мне нужно, чтобы и работало, и с файлом можно было работать при выведении формы.

Уже всё что можно загуглил, но так и не нашёл ответа и не понимаю, каким образом модальность-немодальность окна может влиять на исполняемый код.
Заранее спасибо за ответы.
Страницы: 1
Наверх