Код ниже, кажется, работает сейчас:
With ws1
ColumnTwo = .Cells(1, .Columns.Count).End(xlToLeft).Column
LastRow = .Cells(.Rows.Count, lastColumn).End(xlUp).Row
ColumnOne = ColumnTwo - 1
With ws2
Set aDataRange = ws2.Range("D47:D61")
Set pDataRange = ws2.Range("E47:E61")
If Application.WorksheetFunction.CountA(aDataRange) <> 0 Then
MsgBox ("ColumnOne")
With ws1
For i = 1 To LastRow
If .Cells(i, ColumnOne).Value = 0 Then
.Rows(i).EntireRow.Hidden = True
End If
Next i
End With
ElseIf Application.WorksheetFunction.CountA(pDataRange) <> 0 Then
MsgBox ("ColumnTwo")
With ws1
For i = 1 To LastRow
If .Cells(i, ColumnTwo).Value = 0 Then
.Rows(i).EntireRow.Hidden = True
End If
Next i
End With
Else
Exit Sub
End If
End With
End With
Почему мне нужно определить области диапазона для D47: D61 / E47: E61 на ws2 отдельно? Почему бы «ws2.Application.WorksheetFunction.CountA (« Range »)» не применяться к диапазону на ws2, даже если он содержался в «With ws2»?
Мне пришлось обучать XSL (или XSLT, как хотите) в начале века :), и это совсем другой мир. Это, однако, основа для смены парадигмы: вы должны понимать, что декларативные языки действительно разные. Самый важный совет, который у меня есть, - продолжать изучать решения других людей, работать и действительно пытаться перестать думать в FLOW . Хуже всего то, что в XSL есть «если» и «еще», но обычно есть другой способ сделать что-то.
В отличие от изучения объектно-ориентированного программирования, в XSL (или, как я полагаю, на любом декларативном языке) вам не удастся сделать то, что вы пытаетесь сделать, если вы не сделаете это декларативно.
Итак, отчасти ответ: «заткнись и делай работу», как ты предлагаешь, но более важным моментом является осознание того, что большая часть работы заключается в том, чтобы обдумать смену парадигмы. Итак, настоящий ответ таков: «не спускайте глаз с изменения парадигмы». Вы должны перестать думать в потоке и начать думать в терминах правил, которые могут действовать в любом порядке ... если они сделано правильно, неважно, когда они стреляют. Когда вы наконец задумываетесь о правилах, а не КОГДА что-то происходит, вы начинаете понимать сдвиг.
Найдите несколько примеров с объяснением «почему» от того, кто действительно знает язык. Главное - это изучение шаблонов и идиом.
Я подозреваю, что вы пытаетесь делать императивные вещи в декларативной сфере, что означает, что вы мыслите в терминах шагов. Запишите поток данных в терминах требуемых входов + функции этих входов без сохранения состояния и посмотрите, поможет ли это.
Попробуйте функциональный или функциональный язык, такой как ML или Scheme.
Я не знаю, в чем заключаются ваши конкретные проблемы с Xaml (и я сам не использовал его), но я обнаружил, что при использовании технологий на основе XML, таких как XSLT, немного LISP или Опыт работы со схемой может иметь большое значение. Возможно, вы захотите поиграть с превосходной системой схем, доступной бесплатно по адресу http://www.plt-scheme.org .
Я учился в колледже (языки программирования). Было такое чувство, будто я несколько раз бился головой о кирпичную стену, но примерно на 3/4 пути через класс я понял, что стены больше нет; Я бился головой ни о чем несколько недель. Это было довольно сюрреалистическое ощущение.
Думаю, любой другой способ не будет иметь такого же очарования. Прочтите Геделя, Эшера, Баха; много слушаю Эмерсона, Лейка, Палмера и Кайхосру Сорабджи; покурите гянджу и положите время.
Я считаю, что самый простой способ «разобраться» в языке - это просто начать использовать его исключительно для всего вашего кодирования. С полностью новым языком я бы сказал, что для меня кривая обучения составляет примерно 2 недели программирования примерно по 4-5 часов в день. После этого он внезапно «щелкает», и вы можете меньше полагаться на руководства и документы.
Как и Binary Worrier, у меня была долгая история с такими вещами, как C, C ++, MFC и т. Д., И я быстро освоил XAML, WPF и C #. У меня был побочный путь через HTML, Javascript и XSLT, который, как мне кажется, очень помог мне в подготовке к XAML.
Основная идея XAML довольно проста - все зависит от того, что вы показываете , не то, что вы делаете . Сложность с XAML заключается в том, что нужно изучить множество деталей реализации, и вы в конечном итоге изучаете их все одновременно, чтобы иметь возможность делать большую часть чего угодно.
Я, вероятно, мог бы быть более полезным, если бы вопрос был более конкретным.
Я вижу, где это может взорвать вам голову. Все перечисленные вами языки действительно очень похожи (процедурные).
Как только вы это усвоите, я настоятельно рекомендую вам также изучить функциональный язык . Вы также можете найти это трудным, но изучение этого очень поможет вашим общим навыкам программирования. У вас будет целый набор новых приемов (даже в процедурных языках), и вы больше никогда не будете бояться рекурсии.
Вспомните свою любимую «невежество программиста» . Первый фрагмент кода явно процедурный. Во втором фрагменте вы декларативно заявляете , что для того, чтобы процент был действительным, он должен быть от 0 до 100.
Так что, я думаю, у вас не возникнет проблем с изучением декларативных языков программирования как пока вы работаете над этим достаточно усердно ... нет королевского пути к геометрии