Код VB не влияет на отчет, как это можно было бы решить?

#excel #vba

#excel #vba

Вопрос:

 Sub ProfitLoss_Refresh()
Dim PLRow As Long
Dim LastTransRow As Long
Dim LastResultsRow As Long
Dim AcctRow As Long
With Sheet1
    .Range("B7:I99999").ClearContents 'Clear Existing Report
    LastTransRow = Sheet2.Range("B99999").End(xlUp).Row 'Last transaction row

    Sheet2.Range("P3:Q3").ClearContents 'clear prev criteria
    Sheet2.Range("w3:aa99999").ClearContents 'clear prev results
    If .Range("e3").Value <> Empty Then Sheet2.Range("p3").Value = ">=" amp; .Range("E3").Value Else: Sheet2.Range("p3").Value = ">=01/01/2000" 'from date
  

Комментарии:

1. Можете ли вы предоставить остальную часть подраздела?

2. … и объяснение того, что вы ожидаете от этого кода, было бы полезно здесь.

Ответ №1:

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

 Sub ProfitLoss_Refresh()

    Dim PLRow           As Long
    Dim LastTransRow    As Long
    Dim LastResultsRow  As Long
    Dim AcctRow         As Long
    
    With Sheet2
        LastTransRow = .Range("B99999").End(xlUp).Row       ' Last transaction row
        .Range("P3:Q3").ClearContents                       ' clear prev criteria
        .Range("w3:aa99999").ClearContents                  ' clear prev results
    End With
    
    With Sheet1
        .Range("B7:I99999").ClearContents                   ' Clear Existing Report
        If .Range("e3").Value <> Empty Then
            Sheet2.Range("p3").Value = ">=" amp; .Range("E3").Value
        Else
            Sheet2.Range("p3").Value = ">=01/01/2000"       ' from date
        End If
End Sub
  

Вы используете кодовые имена для обращения к рабочим листам. Если бы они не существовали, вы, вероятно, жаловались бы на сообщение об ошибке, и, поскольку вы этого не делаете, я должен предположить, что они это делают. Поэтому в вашем коде нет ничего плохого, что я могу заметить.

Поэтому это может быть вашим ожиданием. Кажется, вы настраиваете расширенный фильтр. Вы не показываете нам, где применяется фильтр, но критерии фильтрации указывают на потенциальную проблему. Если Range(«E3»).Value — это дата, вряд ли она будет иметь формат, эквивалентный «01/01/2000». Проверьте, является ли E3 правильной датой (числом) или действительно строкой типа «01/01/2000». Также проверьте, имеют ли данные, которые вы фильтруете, истинные даты (числа) или поддельные даты (строки). Прочитайте о том, как Excel обрабатывает даты и как фильтровать по датам.

Комментарии:

1. Sub ProfitLoss_Refresh() Dim PLRow Как долго Dim LastTransRow Как долго Dim LastResultsRow Как долго Dim AcctRow Как долго с листом1

2. Я проверил формат даты, но ничего не нашел: если вы хотите проверить файл и направить меня, я могу дать вам через wikicopy.com ?

3. даже если есть какая-то проблема с кодом или данными, должна быть ошибка отладки, но выполняется полностью, но после того, как эти данные исчезнут из AdvancedFilterResult, если это ясно оттуда, тогда ничто не повлияет на другую область отчета.

4. Я никогда не использовал wikicopy.com . Но если вы опубликуете свой файл там или в другом месте, я попытаюсь получить его и посмотрю.

5. wikisend.com/download/962510/Pamp;L-1.xlsm Это ссылка на файл, wikisend используется для обмена рабочими файлами в Интернете, это на 100% безопасно и безопасно! пожалуйста, если вы посмотрите, надеюсь, хорошее решение: (