Переместить форму на основе значения ячейки - PullRequest
0 голосов
/ 28 октября 2019

Как на 1-м изображении - веха, которая находится на рабочем листе-вехе , а 2-е изображение - на рабочем листе плана , где необходимо переместить форму треугольника на панели с контрольными датами (C5) из основного листа. На эти этапы следует правильно ссылаться по значению на основе рабочего листа плана. Например. Рабочий лист вехи c5 = 14 июня, треугольник должен быть размещен на одну строку выше столбца в ячейке M12, т.е. 14 июня в рабочем листе Plan. И то же самое должно быть сделано для других этапов.

Я новичок в VBA, я что-то пробовал, но он не работал. Я думаю, что мой выбор диапазона ячеек неправильный. Код указан ниже:

Sub Check()
    Dim rng As Range
    Set rng = Sheets("Gleichschenkliges Dreieck 1").Range("H$10:cm$10")
    For Each cell In rng  
    If cell.Value <> "" Then
            Set rng = Range("C13").End(xlToRight).Offset(0, 1)
            ActiveSheet.Shapes("Gleichschenkliges Dreieck 1").Left = rng.Left
    End If
    Next
End Sub

enter image description here enter image description here

1 Ответ

0 голосов
/ 28 октября 2019

Не решение, указатель, но хотелось, чтобы это форматирование имело смысл.

Мне пришлось проделать небольшую работу, чтобы заставить работать функцию match, вы могли бы использовать .find здесь или что-то подобное. Надеюсь, это поможет вам или вдохновит вас.

Sub test_ct()

Dim r As Excel.Range
Dim r2 As Excel.Range
Dim l As Long
Dim s As Shape
Dim d As Date

d = CDate("01/05/2019")

'   Range of my dates at the top
Set r = Sheets("Sheet10").Range("c1:o1")
'   The shape i want to move
Set s = Sheets("Sheet10").Shapes("Triangle1")

'   Set default position
s.Left = 10

'   Get the column of this date, MATCH intended here, but failing on dates.
l = Application.WorksheetFunction.Match(CDbl(CDate("01/05/2019")), r, 0)

'   Destination plus 1/2 width, needs fine tuning, to find centre
l = r(1, l).Left
l = l + (r(1, l).Width / 4)

'   Move the shape
s.Left = l


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