Как отображать данные только из строк 1 и 25 в Excel с помощью VBA? [Дубликат]

«Невозможно найти» означает, что компилятор, который не может найти подходящую переменную, метод, класс и т. д., если у вас есть этот массаж ошибок, прежде всего, вы хотите найти строку кода, где вы получите массаж с ошибкой. И то вы сможете найти, какая переменная, метод или класс не определены перед ее использованием. После подтверждения инициализации этой переменной, метод или класс могут быть использованы для последующего использования ... Рассмотрим следующий пример.

I создадим демонстрационный класс и напечатаем имя ...

class demo{ 
      public static void main(String a[]){
             System.out.print(name);
      }
}

Теперь посмотрим на результат.

Эта ошибка говорит: «имя переменной не может найти». Определить и инициализировать значение для переменной «имя» можно отменить эту ошибку. Фактически, это

class demo{ 
      public static void main(String a[]){

             String name="smith";

             System.out.print(name);
      }
}

Теперь посмотрим на новый вывод ...

Ok Успешно решена эта ошибка .. В то же время, если вы можете получить «не можете найти метод» или «не можете найдите класс «что-то». Сначала определите класс или метод и после использования ..

7
задан Deduplicator 23 February 2015 в 20:27
поделиться

2 ответа

Ну, вы на правильном пути, Benno!

Есть несколько советов по программированию VBA, которые могут вам помочь.

  1. Используйте всегда явные ссылки на лист, с которым вы хотите взаимодействовать. В противном случае Excel может «предположить», что ваш код применим к активному листу, и в конце концов вы увидите, что он закручивает вашу таблицу вверх.
  2. Как упоминалось выше, упомянутый леонц, свяжитесь с собственными методами Excel. Вы можете использовать их на большинстве своих трюков.
  3. Явно объявляю ваши переменные ... они покажут список методов, которые каждый объект предлагает в VBA. Это может сэкономить ваше время на рытье в Интернете.

Теперь у вас есть код проекта ...

Помните, что этот код должен находиться в объекте Excel Sheet, как объясняется lionz. Это применимо только к Листу 2, это зависит от вас, чтобы адаптировать его как к Листу 2, так и к Листу 3 так, как вы предпочитаете.

Надеюсь, что это поможет!

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim oSheet As Excel.Worksheet

    'We only want to do something if the changed cell is B6, right?
    If Target.Address = "$B$6" Then

        'Checks if it's a number...
        If IsNumeric(Target.Value) Then

            'Let's avoid values out of your bonds, correct?
            If Target.Value > 0 And Target.Value < 51 Then

                'Let's assign the worksheet we'll show / hide rows to one variable and then
                '   use only the reference to the variable itself instead of the sheet name.
                '   It's safer.

                'You can alternatively replace 'sheet 2' by 2 (without quotes) which will represent
                '   the sheet index within the workbook
                Set oSheet = ActiveWorkbook.Sheets("Sheet 2")

                'We'll unhide before hide, to ensure we hide the correct ones
                oSheet.Range("A7:A56").EntireRow.Hidden = False

                oSheet.Range("A" & Target.Value + 7 & ":A56").EntireRow.Hidden = True

            End If

        End If

    End If

End Sub
6
ответ дан Bill the Lizard 21 August 2018 в 01:23
поделиться

Ты почти понял. Вы скрываете строки в активном листе. что хорошо. All all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all Что касается автоматического включения. Вам нужно использовать событие workheet_change внутри макроса листа в редакторе VBA (не модули, дважды щелкните по листу 1 в крайнем левом углу редактора). В этом листе используйте раскрывающееся меню над самим редактором (должно быть 2 списка). В списке слева будут отображаться события, которые вы ищете. После этого просто бросьте макрос. Он должен выглядеть следующим образом:

Private Sub Worksheet_Change(ByVal Target As Range)
test1
end Sub

Вот и все. All all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all

7
ответ дан lionz 21 August 2018 в 01:23
поделиться
  • 1
    Примечание: например, по странным вещам, если activesheet больше не относится к листу, который, по вашему мнению, он делает, из-за изменения в рабочей книге или контексте рабочей таблицы, тогда он будет скрывать некоторые другие строки строк (52:55), которые будут кажется, что это не сработало. – Anonymous Type 5 July 2011 в 01:10
Другие вопросы по тегам:

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