2015-10-19 3 views
-2

То, что я пытаюсь сделать здесь, - это указать все фигуры на листе числа. Число должно подсчитываться по одному для каждой формы. Так что это должно выглядеть примерно так.Подсчет фигур

Имейте в виду, что эти формы являются динамическими (это не всегда 2 колонки, 3 строки)

Showcase

Это код, я пытался, но не похоже на работу

Sub Nummer() 

Dim lngShapes As Long 
lngShapes = ActiveSheet.Shapes.Count 

For teller = 1 To lngShapes 
ActiveSheet.Shapes(teller).Value = teller 
Next 

End Sub 
+1

Ваша должность Кажется, что нет jibe с *, чтобы все фигуры на листе отображали число *. Что означает * не работает * означает здесь? – pnuts

+0

Изображение было всего лишь примером того, как он должен выглядеть, если я запустил код, он дает мне ошибку «438», ссылаясь на строку «ActiveSheet.Shapes (teller) .Value = teller». – Iluvpresident

ответ

1

При попытке установить значение (текст) в фигуре вы получите Error 438, потому что коллекция фигур не имеет свойства Value. Вы должны использовать .TextFrame.Characters.Text

Если вы измените строку

ActiveSheet.Shapes(teller).Value = teller 

в

ActiveSheet.Shapes(teller).TextFrame.Characters.Text = teller 

код будет работать.

1

Похоже, что на самом деле вопрос «Прокрутите все фигуры в листе». следует использовать что-то вроде следующего:

Sub nameTheShapes() 
    Dim shp As Shape 
    For Each shp In Sheet1.Shapes 
     shp.TextFrame2.TextRange.Characters.Text = shp.ID 
    Next 
End Sub 

Здесь мы объявляем shape в качестве имени переменной shp. Затем мы перебираем все shapes в sheet1. Затем напишем форму id в форму textframe2.

Если у вас есть какие-то графики, висящие на той же странице, то вы, вероятно, не хотят, чтобы включить их, так что вы можете проверить shp.type свойство, чтобы увидеть, что это не схема:

Sub nameTheShapes() 
    Dim shp As Shape 
    For Each shp In Sheet1.Shapes 
     If shp.type = 1 Then 
      shp.TextFrame2.TextRange.Characters.Text = shp.ID 
     End If 
    Next 
End Sub 
+0

Когда я пытаюсь использовать этот код, я получаю «Ошибка времени выполнения» -2147024809 (80070057) ». Очевидно, вы получаете эту ошибку, если применить ее к форме, которая не может содержать текст. Я использую этот код для добавления формы, может быть, вы знаете, как это исправить? «ActiveSheet.Shapes.AddShape (msoShapeRectangle, ActiveCell.Left, ActiveCell.Top, 100, 40). Выберите« – Iluvpresident

+0

Если всегда всегда будет прямоугольник, вы можете изменить этот оператор 'if' на' if shp.AutoShapeType = msoShapeRectangle then' – JNevill

Смежные вопросы