powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Обращение к другой книге Excel
21 сообщений из 21, страница 1 из 1
Обращение к другой книге Excel
    #37993095
Крукс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Пишу макрос. При изменении значения ячейки в одной книге меняется значение в ячейке другой книги.
Код: 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
Обращение к другой книге Excel
    #37993531
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Крукс,

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


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


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

Опечатался имелось ввиду
Код: vbnet
1.
Workbooks(sha).Worksheets(l).Range(cs).Value = Target.Value ' то есть значение той ячейки в которой изменилось значение
...
Рейтинг: 0 / 0
Обращение к другой книге Excel
    #37993569
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Крукс
Код: 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
Обращение к другой книге Excel
    #37993680
Крукс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ошибка именно в
Код: vbnet
1.
Workbooks(sha).name


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

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


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

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

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


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

The_Prist - так у него sha неправильное имя содержит для начала, только вот он никак не хочет делать, что его просят.
...
Рейтинг: 0 / 0
Обращение к другой книге Excel
    #37994171
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[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
Обращение к другой книге Excel
    #37994177
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_PristКрукс, у Вас в ячейке имя книги с расширением записано?с расширением - см. скриншот
...
Рейтинг: 0 / 0
Обращение к другой книге Excel
    #37994185
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro, спасибо. Крукс, далее: эта книга открыта в момент работы кода?
...
Рейтинг: 0 / 0
Обращение к другой книге Excel
    #37994430
Крукс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
The_Pristа Вы пробовали как я написал делать? Использовать не свойство Text, а Value.

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

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

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

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

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

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

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


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