Определите, содержит ли ячейка значение - PullRequest
1 голос
/ 24 марта 2019

У меня есть командная кнопка с именем «update» для активации макроса.

Макрос должен проверить, если в диапазоне от G: 25 до G: 33 ячейка пуста.
Если пусто, ничего не должнослучиться.
Если вы напишите число в поле, оно должно скопировать это число, а затем поместить его в ячейку на втором листе.
Таким образом, лист 1. (G: 25) должен быть скопирован в лист 2. (G14)и затем повторять до G: 25

Ничего не происходит.

Sheet1 = "Übersicht"
Sheet2 = "Semester01"

Dim cell As Range, c As Integer, score As Integer
Dim rng As Range
Set rng = Range("G25:G33")

c = 14
For Each cell In rng
    score = Cells.Value
    If score < 0 Then
        zelle.Copy
        Sheet2.Cells(7, c).Select
        Worksheet("Semester01").Paste
        c = c + 1
    End If

Next cell
End Sub

Ответы [ 2 ]

1 голос
/ 24 марта 2019

Я не вижу смысла для всех дополнительных переменных и отсутствующих / сбивающих с толку родительских ссылок. Я не вижу, откуда zelle .

Option Explicit

sub go()

    Dim cell As Range, c As Integer

    c = 14
    For Each cell In sheet1.Range("G25:G33")
        If val(cell.Value) < 0 Then
            cell.Copy destination:=Sheet2.Cells(7, c)
            c = c + 1
        End If

    Next cell

End Sub

Если вы используете Option Explicit, вы можете избежать переменной с ошибкой.

0 голосов
/ 24 марта 2019

Копировать ячейки, если критерии ...

Option Explicit

Sub ZelleCopy()

    Const cShS As String = "Übersicht"    ' Source Worksheet Name
    Const cShT As String = "Semester01"   ' Target Worksheet Name
    Const cRng As String = "G25:G33"      ' Source Column Range Address
    Const cTgtFR As Long = 14             ' Target First Row Number
    Const cTgtCol As Variant = "G"        ' Target Column Letter/Number ' or 7

    Dim wsS As Worksheet  ' Source Worksheet
    Dim wsT As Worksheet  ' Target Worksheet
    Dim cell As Range     ' Current Cell (For Each Control Variable)
    Dim c As Long         ' Target Cell (Row) Counter
    Dim Score As Long     ' Criteria Value

    ' Create references to Source and Target Worksheets.
    With ThisWorkbook
        Set wsS = .Worksheets(cShS)
        Set wsT = .Worksheets(cShT)
    End With

    ' Write Target First Row Number to Target Row Counter.
    c = cTgtFR
    ' Loop through each cell (row) in Source Column Range.
    For Each cell In wsS.Range(cRng)
        ' Write value of Current Cell to Criteria Value.
        Score = cell.Value
        ' Check if Criteria Value is less than 0.
        If Score < 0 Then
            ' Write Criteria Value to current cell in Target Column.
            wsT.Cells(c, cTgtCol) = Score
            ' Count Target Row.
            c = c + 1
        End If
    Next

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