Для каждой заполненной ячейки в листе Excel сохраняйте значение перед двоеточием - PullRequest
0 голосов
/ 24 января 2020

Для каждой заполненной ячейки (кроме ячеек в этом формате ./.:.:.:.:.:nan%), содержащей двоеточие (":"), я бы хотел сохранить все до первого двоеточия (:). Я пытался, но я получаю ошибку

   Sub Split()
        Dim position As Integer
        Dim substring As String
        For Each i In ActiveSheet.UsedRange
            position = InStr(Cells(i.Value, 1), ":")
            If (position > 0) Then
                substring = Replace(Left(Cells(i.Value, 1), position - 1), "[", "")
                Debug.Print substring
            End If
        Next i
    End Sub

Ответы [ 2 ]

2 голосов
/ 24 января 2020

Если 'i' - это диапазон, то вы не можете использовать его в Cells () как целое число. Используйте его как диапазон.

   Sub Split()
        Dim position
        Dim substring As String
        Dim cel As Range
        For Each cel In ActiveSheet.UsedRange
            position = InStr(cel.Value, ":")
            If (position > 0) Then
                substring = Replace(Left(cel.Value, position - 1), "[", "")
                Debug.Print substring
            End If
        Next i
    End Sub

Редактировать: мои глаза начинали кровоточить каждый раз, когда я смотрел на dim i as range, поэтому я изменил его на cel. Имя переменной i обычно связано с типом данных integer или long, поэтому очень приятно видеть, что она используется для диапазона. Это заставило вас и других упустить фактическую проблему исходного кода, потому что мы всегда предполагаем, что в Cells(i переменная является числом.

2 голосов
/ 24 января 2020

Вы не объявляете, что такое i, но похоже, что вы хотите, чтобы он был Range. (Я бы предпочел переменную с именем сказать, Cel, но это только я).

Dim i as Range
For each i in ActiveSheet.UsedRange.Cells
    debug.print LEFT(i,Worksheetfunction.SEARCH(":",i)-1)
Next i
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...