Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Comments 
:(
    Опции темы
Izuver
Дата 26.1.2007, 01:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 352
Регистрация: 13.6.2006
Где: Омск

Репутация: 2
Всего: 2



Хочу в ячейку записать информацию с помощью коментариев. С проходом первого цикла создается коментарий и в него ставится число X, а со вторым Y. Расположить наверное так:
X
Y
Но после первого цикла X может не быть, вид коментария тогда будет такой:

Y
То есть мне надо знать есть ли в ячейке коментарий?
В нужный момент надо знать чило X или Y, т.е. как вытащить только X или только Y?
PM MAIL ICQ   Вверх
mihanik
Дата 26.1.2007, 08:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 9
Всего: 109



А в чём проблема?

Перед тем, как работать с ячейкой, "загляни" в неё.
Если там что-то есть, то проверь Что это.
Если коментарий - одно действие, если не коментарий - другое...




--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
Genyaa
Дата 26.1.2007, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Усердный
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.9.2006
Где: Москва

Репутация: 2
Всего: 11



Код

    On Error Resume Next
    t = Worksheets(1).Cells(1, 1).Comment.Text
    If Err.Number = 91 Then
        'коментария нет в ячейке
    Else
        'коментарий есть
    End If


если коментарий есть, то просто анализируем содержимое (в моем случае - текст комментария присваивается переменной t) на предмет количества и содержимого строк в коментарии (строки в коментарии разделяются кодом Chr(10)). Например так:

Код

        Dim ar As Variant
        If Len(t) = 0 Then
            'комментарий есть, но он пуст
        Else
            ar = Split(t, Chr(10))
            If UBound(ar) > 0 Then
                For i = 0 To UBound(ar)
                    Debug.Print ar(i)
                Next i
            Else
                'содержит единственную строку
                ar = Array(t)
                Debug.Print ar(0)
            End If
        End If

--------------------
Всякое решение плодит новые проблемы.
PM WWW   Вверх
ArNic
Дата 5.2.2007, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 278
Регистрация: 3.1.2007

Репутация: нет
Всего: нет



Можно еще так:
Код

Sub CommCellReestr() 
Set AC = ActiveCell.Comment 
If Not AC Is Nothing Then 'проверяем существует ли в активной ячейке комментарий 
        'если да, то смотрим содержимое комментария 
        Ma = Array(AC.Text, Chr(10)) ' создаем массив (Ma) из текста, задаем в качестве разделителя знак абзаца 
        If UBound(Ma) < 1 Then 
              'проверяем, а сколько строк в массиве, не меньше ли 1 
              'если мы правы, тогда все плохо и мы докапываемся до истины! 
              If UBound(Ma) = 0 Then 'Спрашиваем: "А не один ли аргумент в массиве?" 
              'ВБ отвечает «ДА» и мы понимаем, что тут всего одна переменная - "y". 
              'Придется теперь добавить к этому коментарию еще и переменную "х" 
                    AC.Text ("x" & Chr(10) & AC.Text) 
              Else 'Ух! Это оказывается пустой коментарий 
                    AC.Text ("x" & Chr(10) & "y")  'Введем обе перемнных
              End If 
        End If 
Else 'иначе создаем коментарий с помощью 
        AddComment ActiveCell.AddComment 'создаем коментарий 
        AC.Text ("x" & Chr(10) & "y") 'дописываем в него переменные 
End If 
End Sub


Код без коментариев:
Код

Sub CommCellReestr()
Set AC = ActiveCell.Comment
If Not AC Is Nothing Then
 Ma = Array(AC.Text, Chr(10))
    If UBound(Ma) < 1 Then
         If UBound(Ma) = 0 Then
            AC.Text ("x" & Chr(10) & AC.Text)
        Else
            AC.Text ("x" & Chr(10) & "y")
        End If
    End If
Else
ActiveCell.AddComment
AC.Text ("x" & Chr(10) & "y")
End If
End Sub


Еще короче

Код


Sub CommCellReestr()
Set AC = ActiveCell.Comment
If Not AC Is Nothing Then
 Ma = Array(AC.Text, Chr(10))
    If UBound(Ma) < 1 Then
        If UBound(Ma) = 0 Then
            'действие
        Else
            'действие
        End If
    End If
Else
'действие
End If
End Sub



Это сообщение отредактировал(а) ArNic - 5.2.2007, 11:52
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0560 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.