Public Sub TestMe()
Debug.Print WorksheetFunction.CountA(Range("K:K"))
End Sub
Это вывело бы 0
, если оно не используется и что-либо выше 0
, если оно используется. Таким образом, вы можете использовать его для чего-то вроде этого:
Public Sub TestMe()
If WorksheetFunction.CountA(Range("K:K")) Then 'if any value is present
Range("Q:Q") = 1
Else
Range("Q:Q") = 0
End If
End Sub
Однако, поскольку вы упомянули «Я хочу, чтобы он только заполнял данные, в которых есть значение в столбце K.», вы можете проходить только через ячейки со значениями в них и записывать «Something» 6 столбцов в право:
Public Sub TestMe()
Dim myCell As Range
For Each myCell In Range("K:K").SpecialCells(xlCellTypeConstants)
myCell.Offset(0, 6) = "Something"
Next myCell
End Sub
Приведенное выше решение будет работать только в том случае, если в Range("K:K")
есть значения без формул. Если у вас есть формулы, они не будут работать для них, а если у вас ничего нет, будет возвращена ошибка. Таким образом, вероятно, лучше будет выполнить цикл от последней к первой и проверить, пуста ли ячейка или нет, как в этой - https://stackoverflow.com/a/50395958/5448626