2

Моя проблема проиллюстрирована на PrintScreen ниже:

Я много искал в Интернете, и почти все источники говорят, чтобы удалить пустые строки в конце листа и сохранить документ. Например, это то, что предлагается здесь (см. Раздел 2f).

Иногда это работает, но в большинстве случаев это не так!

Я не знаю, является ли это релевантной информацией или нет, но мой документ Excel содержит три пользовательских макроса, в том числе два, которые связаны с форматированием комментариев. На листе "Примечания А" много комментариев, большинство из них с рисунками в качестве фона. Кроме того, мой документ не защищен, поэтому я не думаю, что проблема в том, что лишние строки заблокированы.

Есть ли окончательное решение для этого?

Добавлено: вот коды моих трех макросов.

Модуль 1: Это макрос, который сортирует в алфавитном порядке строку букв слова. Например, применение его к ячейке, содержащей HELLO, даст EHLLO в качестве вывода.

Option Compare Text
Function SortString(ByVal iRange, Optional Croissant As Boolean = True)
'Trevor Shuttleworth, mpep, modifié fs, mpfe
Dim i%, j%, sTemp$
For j = 1 To Len(iRange) - 1
 For i = 1 To Len(iRange) - 1
  If Mid(iRange, i, 1) > Mid(iRange, i + 1, 1) Then
   sTemp = Mid(iRange, i, 1)
   Mid(iRange, i, 1) = Mid(iRange, i + 1, 1)
   Mid(iRange, i + 1, 1) = sTemp
  End If
 Next
Next

If Croissant = False Then
 For i = Len(iRange) To 1 Step -1
  SortString = SortString & Mid(iRange, i, 1)
 Next
 Exit Function
End If

SortString = iRange

End Function

Модуль 2: Это макрос, который автоматически изменяет размер комментариев, содержащих слова.

Sub Fitrangecomments()
'Updateby20140325
Dim rng As Range
Dim WorkRng As Range
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
For Each rng In WorkRng
    If Not rng.Comment Is Nothing Then
        rng.Comment.Shape.TextFrame.AutoSize = True
    End If
Next
End Sub

Модуль 3: Это макрос, который просит пользователя выбрать фоновое изображение для создаваемого комментария и автоматически изменяет размер комментария в соответствии с размерами изображения.

Sub InsertComment()

    Dim strImagePath As Variant
    Dim objImage As Object

    strImagePath = Application.GetOpenFilename("Picture, *.jpg; *.png; *.bmp")
    If strImagePath = False Then Exit Sub

    Set objImage = CreateObject("WIA.ImageFile")
    objImage.LoadFile strImagePath

    With ActiveCell
        If .Comment Is Nothing Then .AddComment ("")
        .Comment.Shape.Fill.UserPicture strImagePath
        .Comment.Shape.Height = objImage.Height * 0.75
        .Comment.Shape.Width = objImage.Width * 0.75
    End With

End Sub

1 ответ1

0

В каком диапазоне вы вызываете эту функцию SortString? Если он проходит по всему листу, это может объяснить вашу проблему. Подумайте об использовании именованного диапазона или вставьте функцию Count, чтобы она выполнялась только в заполненных строках.

Не собираюсь спрашивать про Круассан ...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .