VBA Excel, если заявление для нечетных и четных значений - PullRequest
0 голосов
/ 01 апреля 2020

Я хотел бы установить оператор IF для нечетных и четных значений в VBA Excel.

Это идея, которую я получил после этого запроса здесь:

VBA Excel запускать некоторые части кода только один раз при использовании командных кнопок

Мой код связан с другой частью кода выше и выглядит следующим образом:

 Public Sub ResizeCiv2()
   ' image autoresize code
   Dim targetSheet As Worksheet
   Dim targetRange As Range
   Dim targetShape As Shape


  ' Define the sheet that has the pictures
   Set targetSheet = ThisWorkbook.ActiveSheet
   ' Define the range the images is going to fit
   Set targetRange = targetSheet.Range("C3:K24")


   ' Loop through each Shape in Sheet
    For Each targetShape In targetSheet.Shapes
    ' Check "picture" word in name
    If targetShape.Name Like "*Picture*" Then
        ' Call the resize function
        SizeToRange targetShape, targetRange
    End If

   Next targetShape

   'elements + numeration code

   Dim odd, even As Range
   Set even = ActiveSheet.Range("C51")
   Set odd = ActiveSheet.Range("C52")

   If even.Value = "TRUE" Then
   Call CivBox
   Call Divider
   ActiveSheet.Cells(51, 4).Value = ActiveSheet.Cells(51, 4).Value + 1
   End If
   If odd.Value = "FALSE" Then
   ActiveSheet.Cells(52, 4).Value = ActiveSheet.Cells(52, 4).Value + 1
   ActiveSheet.Range("M15").Value = Range("D52")
   End If

  End Sub

Нет ошибок, но никакой реакции вообще. Я хочу, чтобы это условие работало. enter image description here

В основном я установил функцию ISEVEN для соседних столбцов (C51 и C52), которая в соответствии с D51 и D52 возвращает TRUE или FALSE. Я хотел бы использовать это значение в своем заявлении IF. Я не понимаю, почему это не работает? Должен ли я написать код VBA для нечетных и четных значений?

Ответы [ 2 ]

2 голосов
/ 01 апреля 2020

Если я правильно понимаю вашу проблему, условие IF не выполняется, поскольку заданное вами условие является строкой («ИСТИНА» и «ЛОЖЬ»), хотя на самом деле это логическое значение в Excel.

Вы должны использовать следующее:

If even.Value = True Then
...
End If

Логические значения распознаются в VBA. Поэтому не нужно использовать «ИСТИНА» или «ЛОЖЬ», а просто «Истина» или «Ложь».

2 голосов
/ 01 апреля 2020

Это False:

If Even.Value = "TRUE" Then
If Odd.Value = "FALSE" Then

Это равно True:

If Even.Value = True Then
If Odd.Value = False Then

И это проще:

If Even.Value Then
If Not Odd.Value Then

Вы пытаетесь сравнить Boolean с String

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...