Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2009, 10:58   #1
bag
Пользователь
 
Регистрация: 20.06.2008
Сообщений: 95
По умолчанию Проблемма с FlexGrid

Здравствуйте! При попытке добавить на VBA-форму элемент управления Microsoft FlexGrid v6.0 выводится сообщение об ошибке "The control could njt be created because it is not properly licensed". Что делать? Установлен Microsoft Office 2007
Не забывайте оставлять отзывы (кнопочка в левом нижнем углу сообщения)
bag вне форума Ответить с цитированием
Старый 03.06.2009, 11:40   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Найдите в реестре раздел
HKEY_CLASSES_ROOT\Licenses\72E67120-5959-11cf-91F6-C2863C385E30

и создайте в нём строковый параметр со значением ibcbbbebqbdbciebmcobmbhifcmciibblgm f
(в значении не должно быть пробелов, уберите пробел перед последним символом f)

Проблема неоднократно обсуждалась на форумах:
http://forum.sources.ru/index.php?showtopic=110739
http://bbs.vbstreets.ru/viewtopic.ph...39251#p6718632
http://forum.vingrad.ru/index.php?showtopic=39817


Или просто запустите файл из вложения:
Вложения
Тип файла: rar FlexGrid.rar (283 байт, 427 просмотров)

Последний раз редактировалось EducatedFool; 03.06.2009 в 11:46.
EducatedFool вне форума Ответить с цитированием
Старый 03.06.2009, 13:27   #3
bag
Пользователь
 
Регистрация: 20.06.2008
Сообщений: 95
По умолчанию

Спасибо за совет. Можно еще узнать, как записывать\считывать значения из определенных ячеек?
Не забывайте оставлять отзывы (кнопочка в левом нижнем углу сообщения)
bag вне форума Ответить с цитированием
Старый 03.06.2009, 13:42   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
как записывать\считывать значения из определенных ячеек?
Код:
    ' примеры записи в ячейку
    Range("B5") = 123
    [b5] = 123
    Range("$B$5") = 123
    Range("B" & 5) = 123
    Cells(5, 2) = 123
    Cells(5, "B") = 123
    Rows(5).Cells(2) = 123
    Rows(5).Columns(2) = 123
    Rows(5).Columns("B") = 123
    Rows("5:5").Columns("B") = 123
    Columns(2).Cells(5) = 123
    Columns(2).Rows(5) = 123
    
    ' аналогично производится чтение из ячейки:
    x = [b5]
    x = Range("B5")
    x = Range("B5").Value
    x = Cells(5, 2)
    ' и т.д.
Более подробную информацию можно найти здесь:
http://msoffice.nm.ru/faq/macros.htm
EducatedFool вне форума Ответить с цитированием
Старый 03.06.2009, 14:53   #5
bag
Пользователь
 
Регистрация: 20.06.2008
Сообщений: 95
По умолчанию

Извиняюсь, неточно выразился. Я имел ввиду организацию доступа к ячейкам элемента FlexGrid.
Не забывайте оставлять отзывы (кнопочка в левом нижнем углу сообщения)
bag вне форума Ответить с цитированием
Старый 03.06.2009, 15:06   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Как-то так:
Код:
FG.TextMatrix(i, 0) = i
FG.TextMatrix(i, 1) = "текст"
FG.TextMatrix(i, 2) = Line_Descr

FG.Row = i: FG.col = 2: FG.CellBackColor = vbYellow
FG.Row = i: FG.col = 3: FG.CellBackColor = vbRed

FG.Redraw = True

X = FG.TextMatrix(5, 4)
EducatedFool вне форума Ответить с цитированием
Старый 03.06.2009, 15:18   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Вот ещё пример работы с FlexGrid:

Код:
Sub ЗаполнениеFlexGrid()
    With Me.FlexGrid
        .ColWidth(0) = 2500: .ColWidth(1) = 1800: .ColWidth(2) = 1800: .ColWidth(3) = 1700
        ' устанавливаем ширину столбцов
        
        .Row = 0: .Col = 0: .RowSel = .Rows - 1: .ColSel = 3:
        .FillStyle = 1: .CellAlignment = 4 ' выравнивание по центру
        
        .Row = 1: .RowSel = .Rows - 1: .ColSel = 0: .CellBackColor = vbYellow
        ' красим первый столбец в желтый цвет
        
        .Row = .Rows - 1: .Col = 0: .RowSel = .Rows - 1: .ColSel = 3: .CellBackColor = vbGreen
        ' красим последнюю строку в зелёный цвет
        .CellFontBold = True ' и устанавливаем полужирный шрифт
        
        .Row = 0: .Col = 1: .RowSel = 0: .ColSel = 3: .CellBackColor = vbMagenta
        ' красим верхнюю строку
        
        For i = 1 To 6
            .TextMatrix(i, 0) = "Магазин № " & i
            For j = 1 To 3
                .TextMatrix(0, j) = "Товар № " & j
                .TextMatrix(i, j) = arr(i, j)
            Next j
        Next i
        
        For j = 1 To 3
            .TextMatrix(7, j) = arr(7, j)
        Next j
        .TextMatrix(7, 0) = "Самая низкая цена"
    End With
End Sub
Пример (на VB) во вложении:
Вложения
Тип файла: rar Задача 4.rar (13.1 Кб, 377 просмотров)
EducatedFool вне форума Ответить с цитированием
Старый 04.06.2009, 07:00   #8
bag
Пользователь
 
Регистрация: 20.06.2008
Сообщений: 95
По умолчанию

Еще раз спасибо! Оказывается я тоже в чем-то новичек
Не забывайте оставлять отзывы (кнопочка в левом нижнем углу сообщения)
bag вне форума Ответить с цитированием
Старый 04.06.2009, 07:32   #9
bag
Пользователь
 
Регистрация: 20.06.2008
Сообщений: 95
По умолчанию

А можно ли в определенных ячейках установить вертикальный вывод текста? Это нужно, чтобы сжать по ширине таблицу (в ячейках первой строки идет длинный текст, а в остальных ячейках - короткие числа).
И еще вопрос: как сделать, чтобы содержимое ячеек FlexGrid'а можно было редактировать вручную, а не программно?
Не забывайте оставлять отзывы (кнопочка в левом нижнем углу сообщения)

Последний раз редактировалось bag; 04.06.2009 в 07:39.
bag вне форума Ответить с цитированием
Старый 04.06.2009, 10:15   #10
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
А можно ли в определенных ячейках установить вертикальный вывод текста?
Насколько мне известно, нет.
По крайней мере, такого свойства у FlexGrid я не нашёл.

Цитата:
как сделать, чтобы содержимое ячеек FlexGrid'а можно было редактировать вручную, а не программно?
По событию FlexGrid_DblClick отображаете текстбокс поверх той ячейки, на которой выполнялся DblClick, выставляете размеры и координаты текстбокса в соответствии с размерами выбранной пользователем ячейки, и после ввода значения в текстбокс скрываете его, а введённое значение программно записываете в FlexGrid.
(Excel делает примерно то же самое, когда Вы редактируете текст прямо в ячейке)

Или используйте компонент Microsoft Office SpreadSheet 11.0 или 10.0
В этом случае работать с ячейками будет гораздо проще.
К тому же, этот элемент управления по умолчанию формирует контекстное меню, и позволяет выполнять правку прямо в ячейке.
(пример во вложении)
Вложения
Тип файла: rar Spreadsheet.rar (14.6 Кб, 403 просмотров)
EducatedFool вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемма girz БД в Delphi 4 02.06.2009 22:01
Проблемма с BitBtn Fe_DoS Общие вопросы C/C++ 1 26.03.2009 21:48
Проблемма с 3d max 9 Crivel Gamedev - cоздание игр: Unity, OpenGL, DirectX 5 29.08.2008 23:03
Проблемма c if Crivel Помощь студентам 8 08.08.2008 15:28
Внедрить контрол в FlexGrid beryllium Общие вопросы .NET 0 21.02.2008 01:09