powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Pivot table. Не могу найти значение в столбце таблицы
9 сообщений из 9, страница 1 из 1
Pivot table. Не могу найти значение в столбце таблицы
    #34791346
podol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня есть сводная таблица. Данные в неё попадают из 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
Pivot table. Не могу найти значение в столбце таблицы
    #34792401
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приложите файл. Людям будет легче.
...
Рейтинг: 0 / 0
Pivot table. Не могу найти значение в столбце таблицы
    #34792617
podol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот тут мы кликнули мышкой...
(MsgBox) для наглядности...
мне нужно вытянуть в столбце PathToImg...(в боевых условия он будет скрыт)
...
Рейтинг: 0 / 0
Pivot table. Не могу найти значение в столбце таблицы
    #34792643
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Pivot table. Не могу найти значение в столбце таблицы
    #34792650
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
виноват, PivotTabels(1).TableRange1 конечно.
...
Рейтинг: 0 / 0
Pivot table. Не могу найти значение в столбце таблицы
    #34792667
podol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну в коде "D1" -это жестоко...
я раньше упоминал, что столбец не будет отображен...
на то она и сводная таблица, что юзер в любой момент будет перетаскивать столбцы, как ему захочется...что-то наподобии OLAP-овских кубов...
...
Рейтинг: 0 / 0
Pivot table. Не могу найти значение в столбце таблицы
    #34792713
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Pivot table. Не могу найти значение в столбце таблицы
    #34792798
podol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[/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
Pivot table. Не могу найти значение в столбце таблицы
    #34792940
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Pivot table. Не могу найти значение в столбце таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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