Макрос Excel - невозможно вызвать значение ячейки - PullRequest
0 голосов
/ 15 марта 2011

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

Info worksheet
A1: 5
B1: =A1
Design worksheet
A1:

Есть ли способ скопировать и прочитать значение в B1?Я пытаюсь использовать значение в цикле for, но безуспешно.

Sheets("Info").Select
For i = 1 to 5
    If Range("B" & i).Value <> 0 Then
        Range("B" & i).Copy Destination:=Sheets("Design").Range("A" & x)
        'Sheets("Design").Range("A" & x).Value = Sheets("Offerte").Range("B" & i).Value
        x = x + 1
    End If
Next i

Ответы [ 2 ]

0 голосов
/ 15 марта 2011

Существует более одного способа сделать это.Одним из них является использование функции «смещение», которая действительно заслуживает понимания.Это в основном указывает на количество строк / столбцов в исходной ячейке.

Sub test()

    Dim oCell As Excel.Range
    Dim i As Integer
    Dim x As Integer

    Set oCell = Sheets("Info").Range("B1")

    x = 1

    For i = 1 To 5
        If oCell.Offset(i, 0).Value = 1 Then
            oCell.Offset(i, 0).Copy Destination:=Sheets("Design").Range("A" & x)
            x = x + 1
        End If
    Next i

End Sub 

Кроме того, вы можете установить значение вместо использования свойства copy.Обратите внимание, что это не будет работать, если x не является целым числом> 0.

Sub test2()

Sheets(3).Select
x = 1
For i = 1 To 5
    If Range("B" & i).Value = 1 Then
        Sheets(4).Range("A" & x).Value = Range("B" & i).Value

        'Sheets("Design").Range("A" & x).Value = Sheets("Offerte").Range("B" & i).Value
        x = x + 1
    End If
Next i

End Sub
0 голосов
/ 15 марта 2011

Ваш пример не очень хорошо соответствует коду.Строка

If Range("B" & i).Value = 1 Then

означает, что в вашем примере ничего не будет скопировано.Он ищет ячейку с 1 в нем.Зачем вам вообще нужен этот If оператор?

РЕДАКТИРОВАТЬ Я полагаю, вы просто проверяете, что в ячейке есть что-то для копирования?Я бы, наверное, сделал это следующим образом:

If Trim(Range("B" & i).Value) <> "" Then

Также - вы пропустили настройку x=1?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...