Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: чтобы вытягивать текст с 3-х первых найденных ячеек с 6-ти, и делило любоэ число  (Прочитано 13987 раз)
0 Пользователей и 1 Гость смотрят эту тему.
vkopitsa
Гость
« : 13-03-2010 10:52 » 

Как сделать, чтобы вытягивать текст с 3-х первых найденных ячеек с 6-ти, и делило любоэ число с 3-х первых найденных на 2 и вставляло результат в остальные 3-и. И выделяло красным цветом.

Код:
Private Sub CommandButton5_Click()

Dim tbl As Table, cll As Cell, i As Long
i = 0


For Each tbl In ActiveDocument.Tables
  For Each cll In tbl.Range.Cells
    If IsNumeric(Replace(cll.Range, Chr(13) + Chr(7), "")) Then i = i + 1 Else i = 0
   
   
    If i = 6 Then

    cll.Range.Shading.BackgroundPatternColor = RGB(255, 0, 0)
    cll.Range.Text = Val(cll.Range.Text) / Val(2)

      i = 0
     
    End If
  Next
Next

End Sub




Задача_Пример
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 13-03-2010 10:54 » 

Это вопрос?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
vkopitsa
Гость
« Ответ #2 : 13-03-2010 11:14 » 

да
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 13-03-2010 11:26 » 

а что не работает?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
vkopitsa
Гость
« Ответ #4 : 13-03-2010 15:16 » 

как сделать чтобы в таблице выделяло в 1 строку, а неразбрасывало по строкам.

я тока 2 день в VBA  Жаль

Код:
Private Sub CommandButton7_Click()
Dim tbl As Table, cll As Cell, i As Long
i = 0
b = 0
For Each tbl In ActiveDocument.Tables
  For Each cll In tbl.Range.Cells
    If IsNumeric(Replace(cll.Range, Chr(13) + Chr(7), "")) Then i = i + 1 Else i = 0
    If i = 6 Then
      MsgBox "Ура, нашел 6 числовых ячеек подряд"
     
 'tbl.Cell(Row, i - 6).Range.Shading.BackgroundPatternColor = RGB(255, 0, 0)
'  tbl.Cell(Row, i - 5).Range.Shading.BackgroundPatternColor = RGB(255, 0, 0)
'  tbl.Cell(Row, i - 4).Range.Shading.BackgroundPatternColor = RGB(255, 0, 0)
'   tbl.Cell(Row, i - 3).Range.Shading.BackgroundPatternColor = RGB(255, 0, 0)
'    tbl.Cell(Row, i - 2).Range.Shading.BackgroundPatternColor = RGB(255, 0, 0)
'     tbl.Cell(Row, i - 1).Range.Shading.BackgroundPatternColor = RGB(255, 0, 0)
'tbl.Cell(Row, i - 3).Range.Text = Val(tbl.Cell(Row, -6).Range.Text) / Val(2)
'tbl.Cell(Row, i - 2).Range.Text = Val(tbl.Cell(Row, -4).Range.Text) / Val(2)
'cll.Range.Text = Val(tbl.Cell(Row, -3).Range.Text) / Val(2)
tbl.Cell(Row, b + 5).Range.Shading.BackgroundPatternColor = RGB(255, 0, 0)
tbl.Cell(Row, b + 6).Range.Shading.BackgroundPatternColor = RGB(255, 0, 0)
tbl.Cell(Row, b + 7).Range.Shading.BackgroundPatternColor = RGB(255, 0, 0)
     i = 0
    End If
  Next
Next
End Sub


вот таблица

Таблица
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #5 : 13-03-2010 21:24 » 

почитал условие...тяжкое чувство...не совсем все понятно
давай те по порядку

проверка у Вас идет большей частью по строкам, так что предлагаю бежать по строкам
Код:
    Dim tbl As Table
    Dim row As row
   
    For Each tbl In ActiveDocument.Tables
        For Each row In tbl.Rows
            'здесь начинаем писать условия
        Next
    Next

если подойдет, то начнем со строки №1 в таблице из примера
что должно получиться?


ЗЫЖ и махонькими шажками возможно получим нужный результат
Записан

I Have Nine Lives You Have One Only
THINK!
vkopitsa
Гость
« Ответ #6 : 13-03-2010 22:34 » 

Не работает, может я что-то не то сделал.  А черт его знает...

Код:
Private Sub CommandButton8_Click()

    Dim tbl As Table
    Dim row As row

    For Each tbl In ActiveDocument.Tables
        For Each row In tbl.Rows
    If IsNumeric(Replace(row.Range, Chr(13) + Chr(7), "")) Then i = i + 1 Else i = 0
   
    If i = 6 Then
      MsgBox "бум"
     

    End If

        Next
    Next

End Sub

Надо найти 6 числовых ячеек! И выделить их.
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #7 : 14-03-2010 21:02 » 

Код:
            'здесь начинаем писать условия
           
            '============================
            '6 ячеек
            For iCell = 1 To row.Cells.Count
                If IsNumeric(Replace(row.Cells(iCell).Range.Text, Chr(13) + Chr(7), "")) Then i = i + 1 Else i = 0
            Next
            If i = 6 Then
                MsgBox ("надо красить")
            End If
            'конец проверки 6 ячеек
            '============================

для лучшего понимания объектной модели ворда применяйте Object Browser (вызывается по F2 в редакторе VBA)
Записан

I Have Nine Lives You Have One Only
THINK!
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #8 : 15-03-2010 04:26 » 

vkopitsa, учите русский.
От вашего "любоэ" и "делило", "так блеват и кидат" (c).
Записан

Странно всё это....
anton13
Участник

ru
Offline Offline

« Ответ #9 : 08-04-2010 16:16 » new

Согласен с модератором. Я на VBA писал, но здесь ни хрена не понял о чём речь. Мысль нормально выразите.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines