Добрый вечер! Наверное я с очень простым вопросом, но буду искренне признательна за ответ:
на userform размещены несколько checkbox`ов, при кликании на которые в переменную последовательно заносятся соответствующие текстовые значения. На событие click каждого checkbox`а стоит вызов процедуры (см. код). С помощью процедуры между значениями ставится запятая. Беда в том, что в результате запятая ставится и после завершающего текстового значения. Подскажите, пожалуйста, как можно в итоговой переменной (S) программно удалить последний символ (запятую)?
Sub Result()
Const p = «, »
Dim S$
S = «на основании: »
If Me.cb_Sobstv.Value = True Then S = S & «права собственности» & p
If Me.сb_Arenda.Value = True Then S = S & «договора аренды» & p
If Me.cb_Xran.Value = True Then S = S & «договора ответственного хранения» & p
If Me.cb_Bank.Value = True Then S = S & «договора залога» & p
Vlad.Value = S
End Sub
0 / 0 / 0
Регистрация: 02.04.2013
Сообщений: 8
1
Excel
Как удалить последний символ в строке?
01.11.2020, 19:59. Показов 4350. Ответов 4
Нужно реверсировать строку, появляется лишняя запятая в конце строки. Как убрать последнюю запятую?
Visual Basic | ||
|
Допустим строка
aa1, bb1, cc1, dd1, ee1, ff1
Результат
ff1, ee1, dd1, cc1, bb1,aa1,
А надо
ff1, ee1, dd1, cc1, bb1,aa1
0
You can use the following basic syntax to remove the last character from a string using VBA:
Sub RemoveLastChar()
Dim i As Integer
Dim myString As String
For i = 2 To 11
myString = Range("A" & i)
Range("B" & i) = Left(myString, Len(myString) - 1)
Next i
End Sub
This particular example removes the last character from each string in the range A2:A11 and outputs the results in the range B2:B11.
The following example shows how to use this syntax in practice.
Example: Using VBA to Remove Last Character from Strings
Suppose we have the following list of basketball team names in Excel:
Suppose we would like to remove the last character from each team name.
We can create the following macro to do so:
Sub RemoveLastChar()
Dim i As Integer
Dim myString As String
For i = 2 To 11
myString = Range("A" & i)
Range("B" & i) = Left(myString, Len(myString) - 1)
Next i
End Sub
When we run this macro, we receive the following output:
Column B displays each of the strings in column A with the last character removed.
If you would instead like to remove the last n characters from a string, simply change the 1 in the Left method to a different number.
For example, we can create the following macro to remove the last 2 characters from a string:
Sub RemoveLastTwoChar()
Dim i As Integer
Dim myString As String
For i = 2 To 11
myString = Range("A" & i)
Range("B" & i) = Left(myString, Len(myString) - 2)
Next i
End Sub
When we run this macro, we receive the following output:
Column B displays each of the strings in column A with the last two characters removed.
Note: You can find the complete documentation for the VBA Left method here.
Additional Resources
The following tutorials explain how to perform other common tasks using VBA:
VBA: How to Count Occurrences of Character in String
VBA: How to Check if String Contains Another String
VBA: How to Count Cells with Specific Text
В этом примере ниже я хочу удалить букву «B» с помощью VBA. Таким образом, я загружаю эти значения, которые являются спамом из B5: F50 и все в конце имеют «B». У меня двоякий вопрос. A) Есть ли способ удалить «B» с помощью VBA и заменить эти значения в тех же ячейках? Б) Или надо быть в новых камерах?
77.65B 86.73B 92.97B 84.7B 89.4B
2 ответа
Лучший ответ
Самый простой (самый короткий) способ, который я вижу, — это поиск / замена, , но это будет при условии, что все ячейки оканчиваются на B, а B не может законно встречаться где-либо еще в ячейках.
Sheets("YourSheetNameHere").Range("B5:F50").Replace What:="B", Replacement:="", LookAt:=xlPart
Как вариант, вы можете перебирать каждую ячейку и RIGHT
/ LEN
и т. Д., Но зачем беспокоиться?
0
CLR
16 Авг 2017 в 14:13
Код будет таким
Sub test()
Dim rngDB As Range, vDB
Dim s As String, i As Integer, j As Integer
Set rngDB = Range("b5:f50")
vDB = rngDB
r = UBound(vDB, 1)
c = UBound(vDB, 2)
For i = 1 To r
For j = 1 To c
s = vDB(i, j)
s = Left(s, Len(s) - 1)
vDB(i, j) = s
Next j
Next i
rngDB = vDB
End Sub
Или же
Sub test2()
Dim rngDB As Range
Set rngDB = Range("b5:f50")
rngDB.Replace "B", "", lookat:=xlPart
End Sub
1
Dy.Lee
16 Авг 2017 в 14:11