<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: VBA: If Then with OR in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/vba-if-then-with-or/m-p/174402#M13426</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;Hello,&lt;BR /&gt;&lt;BR /&gt;I'm tryng to populate a field with this VBA code but it doesn't work. I really appreciate any help you can provide.&lt;BR /&gt;&lt;BR /&gt;Dim codigo as string&lt;BR /&gt;&lt;BR /&gt;If [CAMPO]="Captura" OR [CAMPO]="Replanteo" OR [CAMPO]="GPS" Then&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; codigo = "1"&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ElseIf [CAMPO]="Plano" OR [CAMPO]="Ortofoto" Then&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; codigo = "2"&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ElseIf [CAMPO]="Catastro" OR [CAMPO]="Ajuste parcelario" Then&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; codigo = "3"&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else codigo = [CAMPO] &lt;BR /&gt;&lt;BR /&gt;EndIf&lt;BR /&gt;&lt;BR /&gt;__esri_field_calculator_splitter__&lt;BR /&gt;codigo&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi alaska@pozo,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The only thing I see in your code it the "Else codigo = [CAMPO]" being on 1 line, but changing it doesn't solve the problem. What you can do is change your code and use a Select Case. This simplifies the code and seems to work (at least for me in 10.2):&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;Select Case [CAMPO]
Case "Captura", "Replanteo", "GPS" 
&amp;nbsp; codigo = "1"
Case "Plano", "Ortofoto"
&amp;nbsp; codigo = "2"
Case "Catastro","Ajuste parcelario" 
&amp;nbsp; codigo = "3"
Case Else 
&amp;nbsp; codigo = [CAMPO]
End Select

__esri_field_calculator_splitter__
codigo
&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Hope this works for you too.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Kind regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Xander&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="font-style:italic;"&gt;BTW: since this is the Python forum, you could consider using the Python syntax:&lt;BR /&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
def ClfyCampo(campo):
&amp;nbsp;&amp;nbsp;&amp;nbsp; if campo == "Captura" or campo == "Replanteo" or campo == "GPS":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "1"
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif campo == "Plano" or campo == "Ortofoto":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "2"
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif campo == "Catastro" or campo == "Ajuste parcelario":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "3"
&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return campo


__esri_field_calculator_splitter__
ClfyCampo( !CAMPO! )
&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 11 Dec 2021 09:00:37 GMT</pubDate>
    <dc:creator>XanderBakker</dc:creator>
    <dc:date>2021-12-11T09:00:37Z</dc:date>
    <item>
      <title>VBA: If Then with OR</title>
      <link>https://community.esri.com/t5/python-questions/vba-if-then-with-or/m-p/174401#M13425</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hello,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm tryng to populate a field with this VBA code but it doesn't work. I really appreciate any help you can provide.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Dim codigo as string&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If [CAMPO]="Captura" OR [CAMPO]="Replanteo" OR [CAMPO]="GPS" Then&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; codigo = "1"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ElseIf [CAMPO]="Plano" OR [CAMPO]="Ortofoto" Then&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; codigo = "2"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ElseIf [CAMPO]="Catastro" OR [CAMPO]="Ajuste parcelario" Then&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; codigo = "3"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else codigo = [CAMPO] &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;EndIf&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;__esri_field_calculator_splitter__&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;codigo&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 07 Sep 2013 18:58:45 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/vba-if-then-with-or/m-p/174401#M13425</guid>
      <dc:creator>CarmenTorres</dc:creator>
      <dc:date>2013-09-07T18:58:45Z</dc:date>
    </item>
    <item>
      <title>Re: VBA: If Then with OR</title>
      <link>https://community.esri.com/t5/python-questions/vba-if-then-with-or/m-p/174402#M13426</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;Hello,&lt;BR /&gt;&lt;BR /&gt;I'm tryng to populate a field with this VBA code but it doesn't work. I really appreciate any help you can provide.&lt;BR /&gt;&lt;BR /&gt;Dim codigo as string&lt;BR /&gt;&lt;BR /&gt;If [CAMPO]="Captura" OR [CAMPO]="Replanteo" OR [CAMPO]="GPS" Then&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; codigo = "1"&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ElseIf [CAMPO]="Plano" OR [CAMPO]="Ortofoto" Then&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; codigo = "2"&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ElseIf [CAMPO]="Catastro" OR [CAMPO]="Ajuste parcelario" Then&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; codigo = "3"&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else codigo = [CAMPO] &lt;BR /&gt;&lt;BR /&gt;EndIf&lt;BR /&gt;&lt;BR /&gt;__esri_field_calculator_splitter__&lt;BR /&gt;codigo&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi alaska@pozo,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The only thing I see in your code it the "Else codigo = [CAMPO]" being on 1 line, but changing it doesn't solve the problem. What you can do is change your code and use a Select Case. This simplifies the code and seems to work (at least for me in 10.2):&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;Select Case [CAMPO]
Case "Captura", "Replanteo", "GPS" 
&amp;nbsp; codigo = "1"
Case "Plano", "Ortofoto"
&amp;nbsp; codigo = "2"
Case "Catastro","Ajuste parcelario" 
&amp;nbsp; codigo = "3"
Case Else 
&amp;nbsp; codigo = [CAMPO]
End Select

__esri_field_calculator_splitter__
codigo
&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Hope this works for you too.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Kind regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Xander&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="font-style:italic;"&gt;BTW: since this is the Python forum, you could consider using the Python syntax:&lt;BR /&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
def ClfyCampo(campo):
&amp;nbsp;&amp;nbsp;&amp;nbsp; if campo == "Captura" or campo == "Replanteo" or campo == "GPS":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "1"
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif campo == "Plano" or campo == "Ortofoto":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "2"
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif campo == "Catastro" or campo == "Ajuste parcelario":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "3"
&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return campo


__esri_field_calculator_splitter__
ClfyCampo( !CAMPO! )
&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 09:00:37 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/vba-if-then-with-or/m-p/174402#M13426</guid>
      <dc:creator>XanderBakker</dc:creator>
      <dc:date>2021-12-11T09:00:37Z</dc:date>
    </item>
    <item>
      <title>Re: VBA: If Then with OR</title>
      <link>https://community.esri.com/t5/python-questions/vba-if-then-with-or/m-p/174403#M13427</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;You made three errors.&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Xander pointed out one, which is that you put the result on the same line as the else clause rather than on a new line.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The second it that at 10.0 you should not use Dim statements.&amp;nbsp; VBA is gone and in VB script all variables are Variant and can no longer be defined, so don't bother with them or just put Dim codigo and nothing else.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The third is that you closed the If block with EndIf (one word) and not End If (two words).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Assuming there are no null values in your data and your field is long enough to handle the largest value stored in the CAMPO field this code will work (with codigo being put in the field text box as you indicated):&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;If [CAMPO] = "Captura" OR [CAMPO] = "Replanteo" OR [CAMPO] = "GPS" Then
&amp;nbsp; codigo = "1"
ElseIf [CAMPO] = "Plano" OR [CAMPO] = "Ortofoto" Then
&amp;nbsp; codigo = "2"
ElseIf [CAMPO] = "Catastro" OR [CAMPO] = "Ajuste parcelario" Then
&amp;nbsp; codigo = "3"
Else
&amp;nbsp; codigo = [CAMPO] 
End If&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 09:00:39 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/vba-if-then-with-or/m-p/174403#M13427</guid>
      <dc:creator>RichardFairhurst</dc:creator>
      <dc:date>2021-12-11T09:00:39Z</dc:date>
    </item>
  </channel>
</rss>

