Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / по массивам - как лучше сделать? / 5 сообщений из 5, страница 1 из 1
21.07.2008, 09:00
    #35441607
Nomad87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
по массивам - как лучше сделать?
народ, вот такой вопрос, есть две рабочие книги
в одной на каждом листе (кроме первого) в ячейке (B1) есть название объекта. на самом листе располагаются какие либо данные в таблицах. суть в том что к одному объекту может быть несколько листов.
во второй рабочей книге на каждом листе располагается количество таблиц, равное количеству объектов.
нужно сделать так чтобы количество таблиц было равно количеству объектов.
мысли были это сделать при помощи массива, может есть более рациональный путь?
...
Рейтинг: 0 / 0
21.07.2008, 15:13
    #35442632
cadrus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
по массивам - как лучше сделать?
Nomad87народ, вот такой вопрос, есть две рабочие книги
в одной на каждом листе (кроме первого) в ячейке (B1) есть название объекта. на самом листе располагаются какие либо данные в таблицах. суть в том что к одному объекту может быть несколько листов
т.е. на нескольких листах в ячейках B1 может быть одно и то же название объекта?

Nomad87
..нужно сделать так чтобы количество таблиц было равно количеству объектов..


Непонятно, что нужно сделать? Судя из условия, это уже выполнено
Nomad87
во второй рабочей книге на каждом листе располагается количество таблиц, равное количеству объектов ..
...
Рейтинг: 0 / 0
22.07.2008, 07:12
    #35443556
Nomad87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
по массивам - как лучше сделать?
нет, не совсем так, мы заранее не знаем сколько будет объектов
в исходной книге, на каждом листе (кроме одного "Шаблон") лежат договоры, и к одному объекту может быть несколько договоров
т.е. количество листов <>количеству объектов
а нам нужно узнать их названия и количество

я вот пока надумал - идти в цикле по исходной книге, по каждой странице(-1), и записывать значение каждой ячейки В1 в массив ObjectName() as Variant при условии что такого значения в массиве нет.
но не получается, в чем косяк? может есть другие предложения?

автор
Dim Count As Integer
Dim i, j As Integer
Dim ObjectName() As Variant
Dim p As Variant


'Count = ActiveWorkbook.Worksheets.Count - 1
For i = 1 To ActiveWorkbook.Worksheets.Count
If Sheets(i).Name <> "Øàáëîí" Then
Sheets(i).Activate
Range("B1").Select
p = Str(Selection.Copy) 'вот косяк тут ... но вот как его исправить? подскажите..
If ObjectName(i) <> p Then
ObjectName(i) = p
End If


End If
Next i
...
Рейтинг: 0 / 0
22.07.2008, 08:20
    #35443614
Nomad87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
по массивам - как лучше сделать?
получилось вот так ... но он все равно выводит одинаковые элементы массива ... хотя вроде бы условие есть
поглядите плиз

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Dim Count As Integer
Dim i, j As Integer
Dim ObjectName() As String
Dim p As String, dim_val As String

dim_val = ""
For i = 1 To ActiveWorkbook.Worksheets.Count
 If Sheets(i).Name <> "Шаблонí" Then
 Sheets(i).Activate
 p = Range("B1")
 If ObjectName(i) <> p Then
 ObjectName(i) = p

 End If
 dim_val = dim_val + ObjectName(i) + Chr(13)
 End If
 
 Next i
 MsgBox (dim_val)

я понимаю что нужно ещё каждый раз цикл по всему масиву - как это сделать? 0:-)
...
Рейтинг: 0 / 0
22.07.2008, 12:14
    #35444279
Nomad87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
по массивам - как лучше сделать?
спасибо всем кто хоть подумал
после 6 часов совокупления с мозгом ответ найден

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Dim Count As Integer
Dim i, j, o As Integer
Dim ObjectName( 1  To  100 ) As String
Dim f As String, dim_val As String
Dim p As Variant
Dim MasCounter As Byte
Dim bool_povtor As Boolean

dim_val = ""
For i =  1  To ActiveWorkbook.Worksheets.Count
                                                bool_povtor = False
    If Sheets(i).Name <> "шаблон" Then
                                  Sheets(i).Activate
                                  p = Range("B1")
For o =  1  To i
                 If ObjectName(o) = p Then
                                         bool_povtor = True
                    Exit For
                End If
Next o
   ObjectName(i) = p
  If Not bool_povtor Then
  dim_val = dim_val + ObjectName(i) + Chr( 13 )
  MasCounter = MasCounter +  1 
  
    End If
    End If
Next i
 MsgBox (dim_val & Chr( 13 ) & MasCounter)
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / по массивам - как лучше сделать? / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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