#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% безопасно и безопасно! пожалуйста, если вы посмотрите, надеюсь, хорошее решение: (