Страницы: 1
RSS
Как подставить индекс картинки в макросе?
 
Доброй ночи всем) Ситуация такая: нужно сделать так, чтобы я мог контролировать индексы картинок. допустим x=3. значит в
Код
1
ActiveSheet.Shapes.Range(Array("Picture x")).Select
будет выделяться картинка Picture 3. файл с макросом прикрепляю, может кто поможет, а то таких вот бирок будет очень много и вручную перебивать не вариант, а если еще и ошибиться, то все заново переделывать...  
Изменено: Цветной - 19.05.2016 00:37:46
 
Код
1
ActiveSheet.Shapes(x).Select
 
этот вариант был бы подходящим, если бы эксель не присваивал картинкам названия Picture i, где i - порядковый номер. при запуске экселя он обнуляется, но если картинки накладываются, то оператор переворачивания не работает, в общем все довольно запутанно. Можно вручную от 1до n прописать, потом перезаходить в эксель, удалять вручную каждую из картинок, потому что они не выделяются, и потом заново запускать макрос...но надеюсь есть другой выход( нужно в в самом названии картинки изменять порядковый номер,как это сделать ума не приложу(
 
Если ориентироваться на автоматически присвоенные картинкам имена, типа "Picture x", - то имейте ввиду, что эти имена не уникальные
(на листе может быть несколько картинок с одинаковым именем)

Можете макросом в цикле перебрать все картинки, и присвоить им нужные имена (например, числовые)
Код
1
2
3
4
Dim sha As Shape, i&
For Each sha In ActiveSheet.Shapes
    i = i + 1: sha.Name = "shape" & i
Next
а потом обращаться к картинкам так:
Код
1
ActiveSheet.Shapes("shape" & x).Select
 
мы просто изменили Picture x на shapex, обращаться к картинкам по индексу так же нельзя(
хотя оно как бы и работает в таком режиме, но почему то все равно создает сверху shapex picture x(
 
Цитата
Игорь написал:
Если ориентироваться на автоматически присвоенные картинкам имена, типа "Picture x", - то имейте ввиду, что эти имена не уникальные
(на листе может быть несколько картинок с одинаковым именем)

Можете макросом в цикле перебрать все картинки, и присвоить им нужные имена (например, числовые)Код ? 1234Dim sha As Shape, i&For Each sha In ActiveSheet.Shapes    i = i + 1: sha.Name = "shape" & iNextа потом обращаться к картинкам так:
Код ? 1ActiveSheet.Shapes("shape" & x).Select
хотя оно как бы и работает в таком режиме, но почему то все равно создает сверху shapex picture x(
 
в общем решил вопрос очень легко и просто. т.к. мне надо было переворачивать текст на 180 градусов я прибегнул к тому, чтобы делать картинку ячейки, а затем ее переворачивать. метод сомнительный, но вариантов казалось бы не было. а вот и нет) я повернул бирку на 90 градусов, а затем текст на 90 градусов, и получил то, что и хотел) спасибо за помощь)
 
Цветной, Вы знаете, для чего применяется цитирование? Посмотрите на свои сообщения - зачем Вы цитируете всё подряд? Кнопка цитирования не для ответа.
вернитесь в свои сообщения и исправьте.
 
По моему я все нормально делал. "все подряд" это 1 сообщение, да и то по делу? Уважаемый, выплескивайте свой гнев где то в другом месте. И правильно вы заметили, что кнопка цитирование не для ответа, добавте кнопку "ответить" для ответа. только не просто в теме, а конкретному пользователю ответить.
 
Цитата
Цветной написал:
Уважаемый, выплескивайте свой гнев где то в другом месте.
Никакого гнева - справедливое замечание.
"Всё подряд" - это сообщение ЦЕЛИКОМ.
И не нужно мне указывать, где и кому мне писать.
А ответить конкретному пользователю - есть кнопка "Имя".
Страницы: 1
Читают тему
Наверх
Loading...