Новости:

Интересные и полезные статьи по работе с Excel и VBA
можно найти в разделе ХИТРОСТИ

Главное меню

Как сделать сверку шаблона и листа с ответами? (тестирование)

Автор GaS597, 14.07.2015, 12:33:01

« назад - далее »

GaS597

Подскажите пожалуйста как правильно написать такое условие?
If ActiveSheet.ListObjects.Name Like "Таблица" Then...

Alex_Gur

#31
Задавайте, пожалуйста, вопросы поточнее.
Вы хотите определить, есть ли на активном листе таблица с именем "Таблица"?
Мы заинтересованы не только решить ваши задачи, но и помочь вам научиться решать их самостоятельно.
"Дай человеку рыбу, и он будет сыт весь день. Научи человека ловить рыбу, и он будет сыт всю жизнь" :)

GaS597

#32
Да нужно проверить есть ли на активном листе объект название которого содержит "Таблица". И еще в догонку. Как проверить закреплена ли нужная строка?
Как-то так...
If ActiveWindow.FreezePanes = True Then _
Range("Result!C13").Value = 1 Else Range("Result!C13").Value = 0

Но тут без номера строки...

GaS597

#33
И еще подскажите пожалуйста как можно проверить правильная ли формула в ячейке? Сейчас я проверяю вот так
If ActiveSheet.Range("H10").HasFormula And _
ActiveSheet.Range("H10") = 54.03125 Then...

Это не совсем правильно, потому что предполагается, что в расчетах будет использоваться функция, а не просто формула.

Alex_Gur

Для имени диапазона у меня получилось как-то так:

Sub Test2()
   Dim blI As Boolean
   blI = False
   For Each objName In Application.Names
       MsgBox objName.RefersToRange.Parent.Name
       MsgBox ActiveSheet.Name
       If objName.RefersToRange.Name.Name = "Таблица" And objName.RefersToRange.Parent.Name = ActiveSheet.Name Then
           MsgBox "Объект найден!"
           blI = True
           Exit For
       End If
   Next
   If blI = False Then
       MsgBox "Объект не найден!"
   End If
End Sub


Думаю, что можно решить эту задачу как-то проще. Буду рад увидеть более простое решение.
Мы заинтересованы не только решить ваши задачи, но и помочь вам научиться решать их самостоятельно.
"Дай человеку рыбу, и он будет сыт весь день. Научи человека ловить рыбу, и он будет сыт всю жизнь" :)

Alex_Gur

#35
ЦитироватьИ еще подскажите пожалуйста как можно проверить правильная ли формула в ячейке?
Формулу в ячейке Вы можете определить таким образом:
Sub Test3()
   Dim rngI As Range
   Set rngI = Range("A22")
   If rngI.HasFormula Then
       MsgBox rngI.Formula
   End If
End Sub

А затем Вы  можете искать в полученном выражении формулы нужную Вам функцию.
Мы заинтересованы не только решить ваши задачи, но и помочь вам научиться решать их самостоятельно.
"Дай человеку рыбу, и он будет сыт весь день. Научи человека ловить рыбу, и он будет сыт всю жизнь" :)

vikttur

GaS597, для  форматирования кода в сообщении служит кнопка "VB Code"
Alex_Gur, не нужно в цитату вставлять целые сообщения.

GaS597

Хм... когда я делаю так, то не работает...
Dim rng As Range
Set rng = ActiveSheet.Range("G3")
If ActiveSheet.Range("G3").HasFormula And _
rng.Formula = "=ВПР(F3,C4:D15,2,ЛОЖЬ)" Then _
Range("Result!C17").Value = 1 Else Range("Result!C17").Value = 0

Дмитрий Щербаков(The_Prist)

Цитироватьrng.Formula = "=ВПР(F3,C4:D15,2,ЛОЖЬ)"
неверно, т.к. Formula содержит данные о формуле на английском языке. Так сработает:
rng.FormulaLocal = "=ВПР(F3;C4:D15;2;ЛОЖЬ)"
Но Вам так не очень покатит, если на двух языках делать - придется дублировать для каждого языка, что не есть удобно. Правильнее во всех смыслах:
rng.Formula = "=Vlookup(F3,C4:D15,2,false)"
плюс неплохо бы добавить, что диапазон аргумента Таблица должен быть закреплен, т.к. знающие люди часто это могут на автомате делать:
rng.Formula = "=Vlookup(F3,$C$4:$D$15,2,false)"
Или тогда уж убирайте все доллары принудительно:
s = Replace(rng.Formula,"$","")
If s = "=Vlookup(F3,C4:D15,2,false)" then
   msgbox "Все верно!"
end if


P.S. Зачем у Вас в коде Set rng = ActiveSheet.Range("G3"), если Вы это дальше не используете?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

Alex_Gur

#39
ЦитироватьAlex_Gur, не нужно в цитату вставлять целые сообщения.
vikttur, мне нужно показать пользователю, на какой его вопрос я отвечаю. А как это еще можно сделать?
[gmod]Цитата - часть сообщения, на которой необходимо сделать ударение, которая облегчает понимание последующего текста. Никто не запрещает цитировать. Но не просто КОПИРОВАТЬ сообщения в цитату.[/gmod]
Мы заинтересованы не только решить ваши задачи, но и помочь вам научиться решать их самостоятельно.
"Дай человеку рыбу, и он будет сыт весь день. Научи человека ловить рыбу, и он будет сыт всю жизнь" :)

Alex_Gur

ЦитироватьЗачем у Вас в коде Set rng = ActiveSheet.Range("G3"), если Вы это дальше не используете?
Совершенно верно.

GaS597, вместо:

Set rng = ActiveSheet.Range("G3") 
If ActiveSheet.Range("G3").HasFormula ...


лучше написать:

Set rng = ActiveSheet.Range("G3") 
If rng.HasFormula ...

Мы заинтересованы не только решить ваши задачи, но и помочь вам научиться решать их самостоятельно.
"Дай человеку рыбу, и он будет сыт весь день. Научи человека ловить рыбу, и он будет сыт всю жизнь" :)

Alex_Gur

ЦитироватьКак проверить закреплена ли нужная строка?
Попробуйте так:

Sub Test4()
    With ActiveWindow
        If .FreezePanes Then
            MsgBox .Panes(1).VisibleRange.Address(0, 0)
        End If
    End With
End Sub


Данный макрос выдает адрес закрепленных строк.
Мы заинтересованы не только решить ваши задачи, но и помочь вам научиться решать их самостоятельно.
"Дай человеку рыбу, и он будет сыт весь день. Научи человека ловить рыбу, и он будет сыт всю жизнь" :)

RAN

Можно и еще на три листа тему раздуть, и не получить ответа.
Если на листе есть ListObject, то и работать с ним нужно его методами.
Но без файла все это ни о чем.
А что ты умеешь?
Учиться...

Юрий М

GaS597, не нужно все свои вопросы валить в одну кучу (тему).

Alex_Gur

Уважаемый Юрий, это специфическая тема - все вопросы, заданные GaS597, относятся к одному тесту.
Но можно будет попросить GaS597 далее создавать по каждому вопросу отдельную тему.
Мы заинтересованы не только решить ваши задачи, но и помочь вам научиться решать их самостоятельно.
"Дай человеку рыбу, и он будет сыт весь день. Научи человека ловить рыбу, и он будет сыт всю жизнь" :)

Яндекс.Метрика Рейтинг@Mail.ru