Крейг разрабатывает рабочий лист и хочет знать, есть ли способ указать максимальное количество символов, которое можно ввести в любую ячейку. Он не хочет использовать проверку данных, чтобы наложить ограничение.

Невозможно сделать это прямо в Excel без (как упоминает Крейг)

с помощью проверки данных. Однако есть несколько вещей, которые вы можете попробовать для достижения желаемого эффекта. Во-первых, вы можете использовать формулу для проверки длины любой ячейки, а затем при желании отобразить сообщение об ошибке. Например, если ячейки, которые вы хотите проверить, находятся в столбце C, вы можете использовать следующую формулу:

=IF((LEN(C1)>15),"Cell is Too Long","")

Поместите формулу в ячейку справа от проверяемой ячейки (например, в ячейку D1), а затем скопируйте ее на необходимое количество ячеек.

Когда ввод выполняется в C1, и если он превышает 15 символов, отображается сообщение.

Если такой прямой подход нежелателен, вам нужно будет использовать макросы для проверки. Ниже приведен простой пример, который запускается всякий раз, когда что-то изменяется на листе. Затем каждая ячейка на листе проверяется, чтобы убедиться, что она не превышает 15 символов. Если такая ячейка обнаружена, отображается окно сообщения и ячейка очищается.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

For Each cell In UsedRange         If Len(cell.Value) > 15 Then             MsgBox " Can't enter more than 15 characters"

cell.Value = ""

End If     Next End Sub

Более надежный подход — проверить обработчик событий, чтобы увидеть, было ли изменение внесено где-то в пределах диапазона ячеек, длину которых необходимо ограничить.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

Dim rng As Range     Dim rCell As Range     Dim iChars As Integer     On Error GoTo ErrHandler

'Change these as desired     iChars = 15     Set rng = Me.Range("A1:A10")



If Not Intersect(Target, rng) Is Nothing Then         Application.EnableEvents = False         For Each rCell In Intersect(Target, rng)

If Len(rCell.Value) > iChars Then                 rCell.Value = Left(rCell.Value, iChars)

MsgBox rCell.Address & " has more than" _                   & iChars & " characters." & vbCrLf _                   & "It has been truncated."

End If         Next     End If

ExitHandler:

Application.EnableEvents = True     Set rCell = Nothing     Set rng = Nothing     Exit Sub

ErrHandler:

MsgBox Err.Description     Resume ExitHandler End Sub

Чтобы использовать этот макрос, вам просто нужно изменить значение, присвоенное iChars (представляет максимально допустимую длину) и диапазон, присвоенный rng (в настоящее время установлен A1: A10). Поскольку макрос проверяет только изменения в пределах указанного диапазона, он намного быстрее работает с большими листами, чем макрос, который проверяет все используемые ячейки.

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (3150) применим к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и новее) здесь:

link: / excelribbon-Setting_a_Length_Limit_on_Cells [Установка ограничения длины ячеек].