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

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


Непонятно, что нужно сделать? Судя из условия, это уже выполнено
Nomad87
во второй рабочей книге на каждом листе располагается количество таблиц, равное количеству объектов ..
...
Рейтинг: 0 / 0
по массивам - как лучше сделать?
    #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
по массивам - как лучше сделать?
    #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
по массивам - как лучше сделать?
    #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
5 сообщений из 5, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / по массивам - как лучше сделать?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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