Author |
Topic |
|
DArk
Russia
10 Posts |
Posted - 04/17/2008 : 10:46:23
|
как запихать в фигуру данные я разабрался с помощью макросов, но у меня есть необходимость потом посчитать количество элементов и данные которые туда были запиханы сравнить для расчёта количества элементов по схеме как это можно сделать?
з.ы. понимаю что вопрос глупый но блин в англицкой справке ваще нихрена не понятно да и ВБ мне не очень знаком
зараннее всем спс |
|
Tumanov
Russia
1198 Posts |
Posted - 04/17/2008 : 15:45:42
|
Ну, если разобрались, как запихать, то с остальным будет проще. Нужно перебрать всю коллекцию шейпов на странице, для каждого шейпа посмотреть имя или имя мастера (Вы ведь наверное не все сплошняком пересчитывать будете), из нужных шейпов выбрать данные и просуммировать.
|
|
|
DArk
Russia
10 Posts |
Posted - 04/22/2008 : 07:33:09
|
как запихать это в 100 раз проще это нажать кнопку записать макрос и все действия записываются 8о)) а как для подсчёта вытащить пользовательские данные? я не могу записать макрос по вытаскиванию данных...(((
я уже откудато с форума или с сайта взял макрос который тупо считает шейпы
Sub ttt() s1 = "" For i = 1 To ActivePage.Shapes.Count s1 = s1 + "Name= " + ActivePage.Shapes(i).name s1 = s1 + " Id= " + Str(ActivePage.Shapes(i).ID) + vbCrLf Next ActivePage.Shapes(1).Text = s1 End Sub
а как его заставить проверять данные которые я записываю ??
intPropRow2 = vsoShape1.AddRow(visSectionProp, visRowLast, visTagDefault) vsoShape1.CellsSRC(visSectionProp, intPropRow2, visCustPropsLabel).FormulaU = """#210;#232;#239;""" vsoShape1.CellsSRC(visSectionProp, intPropRow2, visCustPropsType).FormulaU = "0" vsoShape1.CellsSRC(visSectionProp, intPropRow2, visCustPropsFormat).FormulaU = "" vsoShape1.CellsSRC(visSectionProp, intPropRow2, visCustPropsLangID).FormulaU = "1049" vsoShape1.CellsSRC(visSectionProp, intPropRow2, visCustPropsCalendar).FormulaU = "" vsoShape1.CellsSRC(visSectionProp, intPropRow2, visCustPropsPrompt).FormulaU = "" vsoShape1.CellsSRC(visSectionProp, intPropRow2, visCustPropsValue).FormulaU = """#208;#224;#236;#224;""" vsoShape1.CellsSRC(visSectionProp, intPropRow2, visCustPropsSortKey).FormulaU = "" Application.EndUndoScope UndoScopeID1, True
у меня проблемы с вб, чё надо дописать что бы он проверял "shape dada" => "Prop.Row_1" ??
|
Edited by - DArk on 04/22/2008 08:03:16 |
|
|
Tumanov
Russia
1198 Posts |
Posted - 04/22/2008 : 15:59:55
|
К сожалению, я не очень понимаю вопрос :( Не знаю, что значит в данном случае "проверить" данные. Давайте напишу, как достать значение из строки Shape Data. Судя по типу данных, Вы заносите туда текстовую строку. В этом случае при выборке данных нужно убирать лишние кавычки в начале и в конце. Чтобы достать текст из Prop.Row_1 шейпа sh нужно выполнить Rezultat = sh.Cells("Prop.Row_1").Formula Для отбрасывания кавычек используется Replace. Значит будет Rezultat = Replace(sh.Cells("Prop.Row_1").Formula, Chr(34), "") Если подставить это в указанный выше макрос, то будет примерно так Sub ttt() s1 = "" For i = 1 To ActivePage.Shapes.Count s1 = s1 + Replace(ActivePage.Shapes(i).Cells("Prop.Row_1").Formula, Chr(34), "") + vbCrLf Next ActivePage.Shapes(1).Text = s1 End Sub Макрос выберет данные из первой строки Shape Data всех шейпов на странице и выведет все это в первый шейп в качестве текста. Однако, если в каком-либо шейпе не будет Shape Data, то макрос вылетит по ошибке. Поэтому лучше добавить хотя бы простенькую защиту. Например, так Sub ttt() s1 = "" For i = 1 To ActivePage.Shapes.Count On Error Resume Next s1 = s1 + Replace(ActivePage.Shapes(i).Cells("Prop.Row_1").Formula, Chr(34), "") + vbCrLf On Error GoTo 0 Next ActivePage.Shapes(1).Text = s1 End Sub
|
|
|
DArk
Russia
10 Posts |
Posted - 04/29/2008 : 11:54:27
|
большое спс именно то что я хотел 8о)) |
|
|
|
Topic |
|
|
|