Daha

ArcMap'te etiketleme için VBScript'te sorun giderme?


İlçe adı etiketlerime FIPS kodları eklemeye çalışıyorum ve 100'ün üzerinde olmadığı sürece sayıya bir veya iki sıfır eklemek istiyorum. Birisinin kodumdaki hatayı bulabileceğini umuyorum:

İşlev FindLabel ([Ad], [FIPS]) if ([FIPS] < 10) o zaman FindLabel = [Name] & vbNewLine & FormatNumber (00,[FIPS]) else if (9 < [FIPS] > 100) sonra FindLabel = [Name] & vbNewLine & FormatNumber (0,[FIPS]) else FindLabel = [Name] & vbNewLine & [FIPS] End Function ise biter

vbscript kullanmanız gerekmedikçe, bunu bir python satırında gerçekleştirebilirsiniz:

"{0}
{1:03d}".format([Ad], int([FIPS]))

Açıklama

Kıvrımlı parantezler, iletilen parametrelerin dizin konumuna başvurur..biçim(). yeni satır karakteriniz ve:03dikinci sıfırdaki bit girdiyi doldurur, böylece sonuç 3 uzunluğunda olur (sayının zaten 3 basamak olmadığı varsayılarak - bu durumda tam sayı döndürülür.)

>>> i için (1,7,33,98,200,123456): print("{0} {1:03d} olur".format(i, i)) 1 olur 001 7 olur 007 33 olur 033 98 olur 098 200 200 olur 123456 123456 olur

vbscript kullanmak istiyorsanız, işte kötüye kullanan eğlenceli bir yaklaşımDoğru():

FindLabel ([Ad], [FIPS]) işlevi [FIPS] < 1000 ise FindLabel = [Ad] & vbNewLine & Right("00"&[FIPS], 3) değilse FindLabel = [Ad] & vbNewLine & [FIPS] Son İşlevi sona erdir

VB'nin böyle görünmesi gerektiğine inanıyorum, ancak Paul'ün çözümü daha zarif. Bu, herhangi bir sayıyı dört basamaklı olmaya zorlamak için VB dize biçimlendirmesinin avantajlarından yararlanır (gerekirse baştaki sıfırlarla doldurma).

FindLabel ([Ad], [FIPS]) FindLabel = [NAME] & vbNewLine & Format$([FIPS],"0000") Fonksiyonu Bitir


Videoyu izle: ArcGIS Open Attribute Excel Aktarma (Ekim 2021).