Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Pivot table. Не могу найти значение в столбце таблицы / 9 сообщений из 9, страница 1 из 1
11.09.2007, 14:33:25
    #34791346
podol
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot table. Не могу найти значение в столбце таблицы
У меня есть сводная таблица. Данные в неё попадают из SQL 2000 с помощью запроса.
В сводной таблице имеются 8 столбцов. По клику на одном из столбцов (столбец "артикул"), мне нужно вывести графическое изображение.
В запросе я вытягиваю этот PathToImg, но не показываю его. На каждый артикул есть своё изображение.
Итак как сейчас оно не работает: в макросе по клику мышкой на поле "артикул", я отлавливаю где это произошло. Затем мне нужно вытянуть другое поле "PathToImg" из pivot, к-рое содержить путь.
Вот так я начинаю: передаю range, где был click мышкой
Sub FindPath(rngFind As Range)
Dim PivotTable As PivotTable
Dim PivotFields As PivotFields
Set PivotTable = Worksheets("Изделия").PivotTables(1)
Set rngPTData = PivotTable.PivotFields("артикул").DataRange
For Each pvtitem In PivotTable.PivotFields("артикул").PivotItems
If rngFind.Cells = pvtitem.Value Then
здесь я нашел, где был клик, на каком елементе свобной таблицы...а дальше?
Собственно как?
Заранее благодарен!
...
Рейтинг: 0 / 0
11.09.2007, 18:29:05
    #34792401
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot table. Не могу найти значение в столбце таблицы
Приложите файл. Людям будет легче.
...
Рейтинг: 0 / 0
11.09.2007, 19:17:41
    #34792617
podol
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot table. Не могу найти значение в столбце таблицы
Вот тут мы кликнули мышкой...
(MsgBox) для наглядности...
мне нужно вытянуть в столбце PathToImg...(в боевых условия он будет скрыт)
...
Рейтинг: 0 / 0
11.09.2007, 19:26:11
    #34792643
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot table. Не могу найти значение в столбце таблицы
Код: plaintext
1.
2.
3.
4.
5.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Intersect(Target, PivotTables( 1 ).table1) Then
        MsgBox (Target.EntireRow.Range("D1").Text)
    End If
End Sub
...
Рейтинг: 0 / 0
11.09.2007, 19:27:39
    #34792650
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot table. Не могу найти значение в столбце таблицы
виноват, PivotTabels(1).TableRange1 конечно.
...
Рейтинг: 0 / 0
11.09.2007, 19:40:28
    #34792667
podol
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot table. Не могу найти значение в столбце таблицы
ну в коде "D1" -это жестоко...
я раньше упоминал, что столбец не будет отображен...
на то она и сводная таблица, что юзер в любой момент будет перетаскивать столбцы, как ему захочется...что-то наподобии OLAP-овских кубов...
...
Рейтинг: 0 / 0
11.09.2007, 20:18:22
    #34792713
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot table. Не могу найти значение в столбце таблицы
podolну в коде "D1" -это жестоко...
я раньше упоминал, что столбец не будет отображен...Как именно столбец не будет отображен? Если просто спрятан - то вполне нормально.
Но в принципе, можно и так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, PivotTables( 1 ).TableRange1) Is Nothing Then
        With PivotTables( 1 ).PivotFields("PathToImg")
            If .Orientation = xlRowField Then
                Debug.Print Intersect(.DataRange, Target.EntireRow)
            ElseIf .Orientation = xlColumnField Then
                Debug.Print Intersect(.DataRange, Target.EntireColumn)
            End If
        End With
    End If
End Sub

podolна то она и сводная таблица, что юзер в любой момент будет перетаскивать столбцы, как ему захочется...что-то наподобии OLAP-овских кубов...Не стоит давать юзерам слишком много воли.
...
Рейтинг: 0 / 0
11.09.2007, 21:42:23
    #34792798
podol
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot table. Не могу найти значение в столбце таблицы
[/quot]Не стоит давать юзерам слишком много воли.[/quot]
Не соглашусь по одной простой причине, - перетаскивание столбцов - это есть НЕОТЪЕМЛИМАЯ часть функционала сводных таблиц. Дописывая таким образом код, мы ставим крест на этом функционале("псевдо-олаповская структура" со своими преймуществами для анализа) . Этого ни в коем случае нельзя делать. Писать своего на 2%, убивая Microsoft-овского на 10%
------
Спасибо в любом случае, но у меня код валиться...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set PivotTable = Worksheets("Изделия").PivotTables( 1 )
    If Not Intersect(Target, PivotTable.TableRange2) Is Nothing Then
        With PivotTables( 1 ).PivotFields("PathToImg")
            If .Orientation = xlRowField Then
                Debug.Print Intersect(.DataRange, Target.EntireRow) '!!!Object variable or With block variable not set 
            ElseIf .Orientation = xlColumnField Then
                Debug.Print Intersect(.DataRange, Target.EntireColumn)
            End If
        End With
    End If
End Sub
Модератор:
Тэг называется [src vba]

-------------
Послений раз сформулирую, наверное меня не поняли...
Глянем на картинку. В 7-ой строке есть артикул. Юзер кликнул по артикулу мышкой...прямь по
"02-10-008/15- 3391-___/___________/_- 090 BLC"
как на выходе получить "O:\АПСТАР ДУБЛЕНКА\03-08 15-3319 54 399.JPG" ?...
Тогда подскажите мне...мне кажется в этой ситуации нужно подключатся к MS SQL и вытягивать название...
...
Рейтинг: 0 / 0
12.09.2007, 02:16:17
    #34792940
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot table. Не могу найти значение в столбце таблицы
podolСпасибо в любом случае, но у меня код валиться...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set PivotTable = Worksheets("Изделия").PivotTables( 1 )
    If Not Intersect(Target, PivotTable.TableRange2) Is Nothing Then
        With PivotTables( 1 ).PivotFields("PathToImg")
            If .Orientation = xlRowField Then
                Debug.Print Intersect(.DataRange, Target.EntireRow) '!!!Object variable or With block variable not set 
            ElseIf .Orientation = xlColumnField Then
                Debug.Print Intersect(.DataRange, Target.EntireColumn)
            End If
        End With
    End If
End Sub

Валится, потому что нет пересечения. Замени эту строку с ошибкой на пару строк:
Код: plaintext
1.
debug.print .datarange.address
debug.print Target.EntireRow.address
И покажи результат. Возможно .datarange надо заменить на что-то вроде .datarange.entirecolumn

podolПослений раз сформулирую, наверное меня не поняли...
Глянем на картинку. В 7-ой строке есть артикул. Юзер кликнул по артикулу мышкой...прямь по
"02-10-008/15- 3391-___/___________/_- 090 BLC"
как на выходе получить "O:\АПСТАР ДУБЛЕНКА\03-08 15-3319 54 399.JPG" ?...Да поняли, поняли.... Просто задача слишком элементарная для вдумчивого написания макроса. Поэтому примеры без самостоятельной доработки напильником работать не будут.

podolТогда подскажите мне...мне кажется в этой ситуации нужно подключатся к MS SQL и вытягивать название...Ну нафига название то? Тогда уж тянуть напрямую блоб.
Смотреть в сторону библиотеки ADODB. Примеров тут на форуме тысячи.

И не забывай пользоваться кнопками "SRC" и "Предварительный просмотр"
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Pivot table. Не могу найти значение в столбце таблицы / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]