Hello, I'm a newbie to VBA Script, so any of the below script could be wrong. I'm trying to use Field Calculator to replace any "_10" at the end of a filename (i.e. an entry in a field, in an attribute table) with "_11". Could anyone help me please? Many thanks in advance! sdrew1
Pre-logic VBA Script Code
Dim MyStr as string
Dim strLen as integer
strLen = Len([FILENAME])
If Right([FILENAME],3) = "_10" Then
MyStr = Left([FILENAME], strLen-3)) & "_11"
Else
MyStr = [FILENAME]
End if
Filename =
MyStr
Solved! Go to Solution.
I think 9.3 should support Python if you run the Field Calculator geoprocessing tool, otherwise for VBA this should work:
Dim length
Dim result
length = Len([Filename])
If length > 2 Then
result = Left([Filename], length - 3) & Replace(Right([Filename], 3), "_10", "_11")
Else
result = [Filename]
End If
---
Filename =
result
you'd have to give me more information, have you tried cut and paste?! Repeat the string?
There are a lot of them in the database. E.g. the FileName field is populated with record entries such as "New_Town_Planning_Project_10" and I want to make all the thousends of records entries be "New_Town_Planning_Project_11".
You shouldn't declare the variables as a type. Try
Dim MyStr
Dim strLen
Thanks Ken, for the help. It sadly still doesn't work (I get an error message that sayd 'Error Running VBA code: User interrupt.'). If you or anyone has any other ideas I would be a very grateful recipient! Steve
How about a Python one-liner?
Filename = !Filename![:-3] + !Filename![-3:].replace("_10", "_11")
Hi Pete, thanks for the help but it's Arc 9.3 so only works in VBA - unless I'm missing something - I'm not used to Python (either). Thanks for trying to help - any clue about VBA would be very grateful!?
I think 9.3 should support Python if you run the Field Calculator geoprocessing tool, otherwise for VBA this should work:
Dim length
Dim result
length = Len([Filename])
If length > 2 Then
result = Left([Filename], length - 3) & Replace(Right([Filename], 3), "_10", "_11")
Else
result = [Filename]
End If
---
Filename =
result
That's great Pete, thanks very much! That works brilliantly. And I think I'm learning - I can actually work out why you've written it as you have. The only bit I don't know about is why you might have written 'if the length is greater than 2'? Is that in case there are default blank fields? (If you don't want to answer this that's ok - I'm just learning and can't find links on the net to teach me about it...). Cheers Pete. Steve
Yeah, in case there's a string that's blank or too short for the Left and Right to work properly.
As Joe said, you can probably use the Replace function better if it supports the 'normal':
Replace(string, find, replace[, start[, count[, compare]]])
.. VBA format in field calculator.