Я пытаюсь поменять содержимое между двумя ячейками в Excel на основе содержимого третьей ячейки. Итак, у меня есть столбец в Excel - скажем, столбец C. Я хочу поменять местами значения соответствующих ячеек в столбцах A и B, основываясь на том, есть ли "S" в соответствующей ячейке в столбце C. Я не эксперт в В.Б., но у меня есть эти два макроса, которые я пытаюсь переделать. Первый находится в модуле листа и выглядит следующим образом:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If Not Application.Intersect(Range("C1"), Target) Is Nothing Then
        If IsNumeric(Target.Value) And Target.Value = "S" Then
            Call swap
        End If
    End If
End Sub

Второй находится в стандартном модуле и выглядит следующим образом:

Sub swap()
 Dim cellVal
 cellVal = ActiveCell.Value
 ActiveCell.Value = ActiveCell.Offset(0, 1).Value
 ActiveCell.Offset(0, 1).Value = cellVal
End Sub

Это не работает по какой-то причине. Может кто-нибудь мне помочь? Я думаю, это потому, что у меня есть ".Посчитайте "в первом макросе, и я ищу" S ", но я не знаю, на что его изменить. Любая помощь приветствуется.

1 ответ1

1

Ну, я не уверен, почему у вас есть Target.Cells.Count чек, но я оставлю это, если вам это нужно.

Основная проблема, которую я увидел в вашем коде, заключалась в том, что вы проверяете значение C в столбце, является ли оно числовым, но вам нужна строка. Итак, ваш IsNumeric(Target.Value) код всегда возвращал ложь, когда вы вводите "S в столбце C. Так что я убрал это.

Код ниже будет работать для всего столбца C:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then
        Exit Sub
    End If

    If Not Intersect(Range("$C:$C"), Target) Is Nothing Then
        If Target.Value = "S" Then
            swap Target
        End If
    End If
End Sub

Sub swap(rng As Range)
    Dim cellVal As String
    cellVal = rng.Offset(0, -2).Value
    rng.Offset(0, -2).Value = rng.Offset(0, -1).Value
    rng.Offset(0, -1).Value = cellVal
End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .