Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Обращение к другой книге Excel / 21 сообщений из 21, страница 1 из 1
11.10.2012, 10:16
    #37993095
Крукс
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к другой книге Excel
Здравствуйте. Пишу макрос. При изменении значения ячейки в одной книге меняется значение в ячейке другой книги.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Dim t As Integer
Dim sha As String, l As String, cs As String

Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal target As Range)
  If target.Interior.Color = RGB(192, 192, 192) Then ' действие происходит при изменении данных в ячейках определенного цвета
        sha = CStr(sh.Cells(1000 + t, 100).Value) ' имя книги записано на листе
        l = sh.Cells(1000 + t, 101).Value ' имя листа записано там же 
        t = target.Column - 1 
        cs = sh.Cells(target.Row - 1, t + 1) ' здесь записан адрес ячейки
        Workbooks(sha).Worksheets(l).Range(cs).Text = t.Value 'тут выскакивает run-time error 9 Subscript of range
    End If
End Sub


Книга в которой надо заменить значение открыта в фоне, имя книги, листа и ячейки нормально забирается. В чем дело? Заранее спасибо.
...
Рейтинг: 0 / 0
11.10.2012, 12:55
    #37993531
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к другой книге Excel
Крукс,

Код: vbnet
1.
Workbooks(sha).Worksheets(l).Range(cs).Value = t.Value


Text - предназначено только для чтения. Запись в данное свойство невозможна.
Код: vbnet
1.
t = target.Column - 1


что хотели получить этой строкой? Здесь у Вас t не является ячейкой, а получает значение числа(да и объявлена как Integer). А Вы пытаетесь обратиться к ней как к ячейке.
...
Рейтинг: 0 / 0
11.10.2012, 13:02
    #37993555
Крукс
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к другой книге Excel
The_Pristчто хотели получить этой строкой? Здесь у Вас t не является ячейкой, а получает значение числа(да и объявлена как Integer). А Вы пытаетесь обратиться к ней как к ячейке.

Опечатался имелось ввиду
Код: vbnet
1.
Workbooks(sha).Worksheets(l).Range(cs).Value = Target.Value ' то есть значение той ячейки в которой изменилось значение
...
Рейтинг: 0 / 0
11.10.2012, 13:05
    #37993569
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к другой книге Excel
Крукс
Код: vbnet
1.
Workbooks(sha).Worksheets(l).Range(cs).Text = t.Value 'тут выскакивает run-time error 9 Subscript of range

ищем, что именно неправильно, при возникновении ошибки пишем в окне immediate и смотрим, где ошибка:
Код: vbnet
1.
2.
3.
?Workbooks(sha).Name
?Workbooks(sha).Worksheets(l).Name
?Workbooks(sha).Worksheets(l).Range(cs).Text
...
Рейтинг: 0 / 0
11.10.2012, 13:48
    #37993680
Крукс
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к другой книге Excel
Ошибка именно в
Код: vbnet
1.
Workbooks(sha).name


Но sha = имени файла
...
Рейтинг: 0 / 0
11.10.2012, 14:18
    #37993749
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к другой книге Excel
ищем, как правильно называется книга:
Код: vbnet
1.
2.
3.
?Workbooks(1).name
?Workbooks(2).name
?Workbooks(3).name
...
Рейтинг: 0 / 0
11.10.2012, 14:55
    #37993835
Крукс
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к другой книге Excel
Shocker.Proищем, как правильно называется книга

Книга пока всего одна и имя правильное...а вот почему он вдруг на ней затыкается, я просто теряюсь(((
...
Рейтинг: 0 / 0
11.10.2012, 14:57
    #37993844
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к другой книге Excel
Что выдает
Код: vbnet
1.
?Workbooks(1).name
...
Рейтинг: 0 / 0
11.10.2012, 15:06
    #37993866
Крукс
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к другой книге Excel
run-time error "9": Subscript out of range
...
Рейтинг: 0 / 0
11.10.2012, 15:08
    #37993871
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к другой книге Excel
Так.
Запускай программу.
Она выдаст ошибку.
Жмешь debug
в окне Immediate пишешь
Код: vbnet
1.
?Workbooks(1).name


Что выдает?
...
Рейтинг: 0 / 0
11.10.2012, 15:15
    #37993890
Крукс
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к другой книге Excel
Круксrun-time error "9": Subscript out of range
...
Рейтинг: 0 / 0
11.10.2012, 15:30
    #37993938
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к другой книге Excel
Не верю, простите, можно скриншот?
...
Рейтинг: 0 / 0
11.10.2012, 15:56
    #37994013
Крукс
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к другой книге Excel
Пжалста
...
Рейтинг: 0 / 0
11.10.2012, 16:47
    #37994107
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к другой книге Excel
Крукс,

а Вы пробовали как я написал делать? Использовать не свойство Text, а Value.

Код: vbnet
1.
Workbooks(sha).Worksheets(l).Range(cs).Value = Target.Value
...
Рейтинг: 0 / 0
11.10.2012, 16:56
    #37994129
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к другой книге Excel
Shocker.ProТак.
Запускай программу.
Она выдаст ошибку.
Жмешь debug
в окне Immediate пишешь
Код: vbnet
1.
?Workbooks(1).name


Что выдает?Shocker.ProНе верю, простите, можно скриншот?я не вижу на скриншоте того, что я просил сделать.

The_Prist - так у него sha неправильное имя содержит для начала, только вот он никак не хочет делать, что его просят.
...
Рейтинг: 0 / 0
11.10.2012, 17:17
    #37994171
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к другой книге Excel
[quot Shocker.Pro]Shocker.ProТак.
The_Prist - так у него sha неправильное имя содержит для начала, только вот он никак не хочет делать, что его просят.
Согласен. Исходя из моей логики понимания данного кода. Значение переменной t присваивается после того, как значение переменной книги.

Но не факт, что я верно понял задумку. А вот попытка присвоения значения свойствую Text - это явная ошибка(хоть и должна появляться 424, а не 9 в данном случае).

Крукс, у Вас в ячейке имя книги с расширением записано? Может надо дописать расширение:
Код: vbnet
1.
sha = CStr(sh.Cells(1000 + t, 100).Value) & ".xls"
...
Рейтинг: 0 / 0
11.10.2012, 17:19
    #37994177
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к другой книге Excel
The_PristКрукс, у Вас в ячейке имя книги с расширением записано?с расширением - см. скриншот
...
Рейтинг: 0 / 0
11.10.2012, 17:22
    #37994185
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к другой книге Excel
Shocker.Pro, спасибо. Крукс, далее: эта книга открыта в момент работы кода?
...
Рейтинг: 0 / 0
11.10.2012, 19:37
    #37994430
Крукс
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к другой книге Excel
The_Pristа Вы пробовали как я написал делать? Использовать не свойство Text, а Value.

Да (более того сначала и было value, потом решил попробовать text и сделал случайно скриншот с text). Результат тот же
The_Prist Крукс, далее: эта книга открыта в момент работы кода?

КруксКнига в которой надо заменить значение открыта

Shocker.ProThe_Prist - так у него sha неправильное имя содержит для начала, только вот он никак не хочет делать, что его просят.

В sha полное имя с расширением (см. скриншот). Имя листа и книги содержится ячейке на листе
...
Рейтинг: 0 / 0
11.10.2012, 21:12
    #37994536
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к другой книге Excel
Крукс,

идем дальше: книга с кодом и книга, к которой обращаетесь открыты в одном экземпляре Excel? Попробуйте прямо из кода открыть эут книгу и затем к ней обращаться.
...
Рейтинг: 0 / 0
12.10.2012, 00:00
    #37994693
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к другой книге Excel
КруксShocker.ProThe_Prist - так у него sha неправильное имя содержит для начала, только вот он никак не хочет делать, что его просят.

В sha полное имя с расширением (см. скриншот). Имя листа и книги содержится ячейке на листеповторяю, пришли результат выполнения команд
Код: vbnet
1.
2.
3.
?Workbooks(1).name
?Workbooks(2).name
?Workbooks(3).name

это так сложно?
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Обращение к другой книге Excel / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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