Использование MsgBox и If Then, чтобы открыть другой лист

Немного упрощенно: функция лямбда - это функция, которая может быть передана другим функциям и доступна для доступа к логике.

В синтаксисе C # лямбда часто компилируется в простые методы так же, как анонимные делегаты, но

Например, (в C # 3):

LinqToSqlContext.Where( 
    row => row.FieldName > 15 );

LinqToSql может читать эту функцию (x> 15) и преобразовывать ее к фактическому SQL для выполнения с использованием деревьев выражений.

Вышеприведенное утверждение становится:

select ... from [tablename] 
where [FieldName] > 15      --this line was 'read' from the lambda function

Это отличается от обычных методов или анонимных делегатов (которые действительно являются манерами компилятора), потому что они не могут быть прочитаны .

Не все методы в C #, которые используют лямбда-синтаксис, могут быть скомпилированы в деревья выражений (т.е. фактические лямбда-функции). Например:

LinqToSqlContext.Where( 
    row => SomeComplexCheck( row.FieldName ) );

Теперь дерево выражений невозможно прочитать - SomeComplexCheck не может быть разбит. Оператор SQL будет выполняться без того, и каждая строка данных будет помещена через SomeComplexCheck.

Функции Lambda не следует путать с анонимными методами. Например:

LinqToSqlContext.Where( 
    delegate ( DataRow row ) { 
        return row.FieldName > 15; 
    } );

У этого также есть встроенная функция, но на этот раз это просто магия компилятора - компилятор C # разделит это на новый метод экземпляра с автогенерированным именем.

Анонимные методы не могут быть прочитаны, и поэтому логика не может быть переведена так, как может, для лямбда-функций.

0
задан ApogWay 20 February 2019 в 14:32
поделиться

2 ответа

Просто для того, чтобы поместить все отличные комментарии в код (и добавить небольшое изменение моего собственного):

Sub PopupBox()
    If MsgBox("Add Comments or Images to Category?", vbYesNo + vbQuestion, "Comment") = vbYes Then
         ActiveWorkbook.Sheets("Comments").Activate
         ActiveWorkbook.Sheets("Comments").Range ("B7")
    End If
End Sub

В большинстве случаев я бы поступил точно так же, как вы, назначив ответ MsbBox для переменная, но в чем-то таком простом я бы не стал беспокоиться о дополнительном коде и просто поместил бы MsgBox прямо в «If».

0
ответ дан Frank Ball 20 February 2019 в 14:32
поделиться

Если вы хотите выбрать эту ячейку, вам нужно сначала активировать лист:

ActiveWorkbook.Sheets("Comments").Activate
ActiveWorkbook.Sheets("Comments").Range("B7").Select
0
ответ дан John Coleman 20 February 2019 в 14:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: