У меня есть 10 листов в книге.

На каждом листе этой книги я хочу ввести клиента, имя проекта и менеджера проекта в определенной должности. Эти значения одинаковы в аттестатах.

В идеале я хочу, чтобы пользователь вводил эти данные в один «административный лист», а затем отображал эту информацию на всех листах независимо от ширины их столбцов.

Как правильно это сделать?

Я подумал о том, чтобы ввести текстовое поле в каждый из 10 рабочих листов. Но у этого есть как минимум два недостатка

  • Пользователи могут случайно выбрать и переместить текстовые поля, что приведет к путанице и раздражению.
  • У меня должны быть какие-то события изменения рабочего листа VBA, которые обновляют флажки, когда пользователи меняют имя менеджера проекта, клиента или проекта на административном листе. Это кажется излишне сложным.

Есть ли способ лучше?

1
user1283776 22 Янв 2015 в 11:47
Что вы подразумеваете под no regards to their column widths? что ширина/положение общих данных должны быть в одном и том же месте на всех листах? или что он может иметь разную ширину/положение на каждом листе?
 – 
Aprillion
22 Янв 2015 в 13:13
Я только что заметил комментарий ОП под ответом: I want the text to be displayed in the same position on all sheets.
 – 
Aprillion
22 Янв 2015 в 13:15
Этот вопрос вообще не ясен - вам нужно привести пример того, как вы хотите, чтобы данные выглядели.
 – 
SierraOscar
22 Янв 2015 в 13:23

2 ответа

Не могли бы вы просто использовать командную кнопку на панели администратора и запустить из нее этот код?

Sub SO()

For Each ws In ActiveWorkbook.Sheets
    If Not ws.Name = "admin sheet" Then _
        ws.Range("A1:B10").Value = Sheets("admin sheet").Range("A1:B10").Value

    ws.Columns("A:B").AutoFit

Next ws

End Sub

Если вы действительно хотите, вы можете назначить это событию Worksheet_Change() в модуле «лист администратора», но я бы рекомендовал кнопку, над которой у пользователя есть хотя бы некоторый контроль.

0
SierraOscar 22 Янв 2015 в 12:52
Я мог бы. Мой почтовый вопрос о том, как отображать значения с одного листа на нескольких листах без учета ширины столбцов целевых листов. В этом случае я не могу использовать "ws.Range("A1:B10").Value = ". Я могу использовать текстовое поле, о котором я писал. Но я думаю, что, возможно, есть лучшее решение для отображения данных на нескольких листах без учета ширины столбца.
 – 
user1283776
22 Янв 2015 в 12:45
Вы пробовали код? Он просто получает значения - это не имеет ничего общего с шириной столбцов?
 – 
SierraOscar
22 Янв 2015 в 12:48
Прошу прощения за неясность. И спасибо за попытку помочь! Я имею в виду, что если столбец A узкий, то тексты в столбцах A и B будут близки друг к другу. Если столбец A широкий, то они будут далеко друг от друга. Я хочу, чтобы текст отображался в одном и том же месте на всех листах.
 – 
user1283776
22 Янв 2015 в 12:49
1
Используйте End If вместо символа продолжения строки для многострочных операторов if, чтобы улучшить удобство сопровождения.
 – 
Aprillion
22 Янв 2015 в 13:18
Автофит не помогает. Столбцы содержат больше информации о других строках. В одних столбцах много текста, а в других столбцах текста меньше. Мне нужен метод для отображения информации на листе, который не зависит от столбца. Я знаю, что текстовое поле является одним из таких методов. Но я думаю, что есть другие лучшие методы, о которых я не знаю. Может быть, можно сделать живую фотографию четырех клеток и показать ее где угодно? Или что-то подобное
 – 
user1283776
22 Янв 2015 в 13:20

Вы можете Insert > Shapes > например. Text Box или Rounded Rectangle, затем нажмите на панель формул, пока выделена новая фигура, и введите ссылку на ячейку на листе администратора, например
='admin sheet'!A1 и отформатируйте фигуру соответствующим образом.

Обязательно Format Shape... > Properties > Don't move or size with cells.

text box with formula screenshot

Когда вы закончите разработку листа, выберите все редактируемые ячейки и в контекстном меню Format cells... на вкладке Protection снимите флажок Lock cells, чтобы разрешить редактирование этих ячеек даже после того, как вы защитите лист на следующем шаге:

Используйте Review > Protect Sheet — вам не нужно использовать какой-либо пароль, и вы можете включить все действия, которые должны выполнять пользователи, просто НЕ устанавливайте флажок Edit Objects, если хотите запретить пользователям перемещать фигуры.

0
Aprillion 22 Янв 2015 в 13:42