powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Передача данных с TextBox или переменной в Range
9 сообщений из 9, страница 1 из 1
Передача данных с TextBox или переменной в Range
    #33055445
boka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем! Помогите мне в решении вопроса: Имеется Sheets в котором есть компонент TextBox и переменная в которую записывается значение. Необходимо эти данные поместить в таблицу, которая находиться на другом Sheets.
...
Рейтинг: 0 / 0
Передача данных с TextBox или переменной в Range
    #33055742
Фотография funddd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сдается, F1 по "object model"
...
Рейтинг: 0 / 0
Передача данных с TextBox или переменной в Range
    #33055793
boka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообщем вот так.

For Each ItemSum In ActiveWorkbook.Worksheets
Range("A" & ItemSum.Index) = ItemSum.Range("C3")
Range("B" & ItemSum.Index) = ItemSum.Range("C25")
Range("C" & ItemSum.Index) = ItemSum.TextBox1.Text
Range("D" & ItemSum.Index) = ItemSum.Class
Range("E" & ItemSum.Index) = ItemSum.sVal
Range("F" & ItemSum.Index) = ItemSum.SumProv
Range("G" & ItemSum.Index) = ItemSum.Range("D48")
'Range("F" & ItemSum.Index) = ItemSum.Range("C3")
Next ItemSum

Цикл крутит все sheets в данной книге берет нужные данные и закидывает их в данную книгу. Выходит ошибка вот на этих строках:

Range("C" & ItemSum.Index) = ItemSum.TextBox1.Text
Range("D" & ItemSum.Index) = ItemSum.Class
Range("E" & ItemSum.Index) = ItemSum.sVal
Range("F" & ItemSum.Index) = ItemSum.SumProv

В справочнике я чего то не понял. Как передать значения может подскажете?
...
Рейтинг: 0 / 0
Передача данных с TextBox или переменной в Range
    #33056092
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bokaВообщем вот так.
For Each ItemSum In ActiveWorkbook.Worksheets
Range("A" & ItemSum.Index) = ItemSum.Range("C3")
Range("B" & ItemSum.Index) = ItemSum.Range("C25")
Range("C" & ItemSum.Index) = ItemSum.TextBox1.Text
Range("D" & ItemSum.Index) = ItemSum.Class
Range("E" & ItemSum.Index) = ItemSum.sVal
Range("F" & ItemSum.Index) = ItemSum.SumProv
Range("G" & ItemSum.Index) = ItemSum.Range("D48")
'Range("F" & ItemSum.Index) = ItemSum.Range("C3")
Next ItemSum

Цикл крутит все sheets в данной книге берет нужные данные и закидывает их в данную книгу.

А что этот код должен был делать? Объясни человеческим языком.

Вообще, если хочешь записать что-то на конкретный лист, ты ДОЛЖЕН УКАЗЫВАТЬ на какой именно лист ты хочешь записывать. Например:
Worksheets("SheetForResults").Range("B4").Value = Worksheets("SheetWithTextBox").Shapes("TextBox1").Text
...
Рейтинг: 0 / 0
Передача данных с TextBox или переменной в Range
    #33056462
boka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl bokaВообщем вот так.
For Each ItemSum In ActiveWorkbook.Worksheets
Range("A" & ItemSum.Index) = ItemSum.Range("C3")
Range("B" & ItemSum.Index) = ItemSum.Range("C25")
Range("C" & ItemSum.Index) = ItemSum.TextBox1.Text
Range("D" & ItemSum.Index) = ItemSum.Class
Range("E" & ItemSum.Index) = ItemSum.sVal
Range("F" & ItemSum.Index) = ItemSum.SumProv
Range("G" & ItemSum.Index) = ItemSum.Range("D48")
'Range("F" & ItemSum.Index) = ItemSum.Range("C3")
Next ItemSum

Цикл крутит все sheets в данной книге берет нужные данные и закидывает их в данную книгу.

А что этот код должен был делать? Объясни человеческим языком.

Вообще, если хочешь записать что-то на конкретный лист, ты ДОЛЖЕН УКАЗЫВАТЬ на какой именно лист ты хочешь записывать. Например:
Worksheets("SheetForResults").Range("B4").Value = Worksheets("SheetWithTextBox").Shapes("TextBox1").Text

Этот код перебирает все листы в данной книге и записывает определенные данные каждого листа в нужную часть таблицы. Строка записи определяется индексом листа. Процедура находится на листе с таблицей и прописана на
событие CommandButton1_Click(). White Owl написал следующее:

Range("C" & ItemSum.Index) = ItemSum.Shapes("TextBox1").Text

выдается ошибка "Object doesn't support this property or method". Имя листа обязательно? А если у меня имена листов не постоянные и их количество тоже. Как в этом случае быть? Да, и еще как записать данные с переменной, которая находится в листах?
...
Рейтинг: 0 / 0
Передача данных с TextBox или переменной в Range
    #33057185
boka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Забыл сказать ItemSum был объявлен как:

Dim ItemSum As Worksheet

Если ее объявить как sheets то ItemSum.Name выдает ошибку как быть?
...
Рейтинг: 0 / 0
Передача данных с TextBox или переменной в Range
    #33058426
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bokaПроцедура находится на листе с таблицей и прописана на
событие CommandButton1_Click().
Я же сказал: ты ДОЛЖЕН УКАЗЫВАТЬ на какой именно лист ты хочешь записывать!
Сейчас ты нажимаешь на кнопку. Фокус остается на кнопке. Объекты чьи родители не указаны пытаются использовать в качестве родителя объект имеющий фокус. То есть у тебя ищется Range("C" & ItemSum.Index) не в листе, а у кнопки.
Если сильно хочется кривой, но легкой жизни, можешь добавить в начало своего макроса команду: ActiveSheet.Activate. Это перенесет фокус с кнопки на лист.

boka White Owl написал следующее:
Range("C" & ItemSum.Index) = ItemSum.Shapes("TextBox1").Text
выдается ошибка "Object doesn't support this property or method".
Я этого не писал, вообще-то :)

bokaИмя листа обязательно?
В принципе нет. Можно использовать имя листа или его индекс. Можно использовать специальную переменную ActiveSheet. А лучше всего сделать себе отдельную переменную и присвоить ей ссылку на нужный лист, а потом уже использовать эту переменную
Код: plaintext
1.
2.
3.
4.
Dim wsTarget as Worksheet
set wsTarget = ActiveSheet
set wsTarget = Worksheets( 3 )
set wsTarget = Worksheets("MyTarget")
wsTarget.Range .....


bokaА если у меня имена листов не постоянные и их количество тоже. Как в этом случае быть?
Тогда вешаться :) Искать метод зафиксировать имена листов или их порядок в книге. Или внутри листа в какой-то ячейке писать специальный идентификатор листа и потом пробегать по всем листам в поисках нужного. Но проще все же запретить менять имена листов.

bokaДа, и еще как записать данные с переменной, которая находится в листах?
Чего? Что такое "переменная в листах"? Значение ячейки? ws.Range("D5").Value например.
...
Рейтинг: 0 / 0
Передача данных с TextBox или переменной в Range
    #33058821
boka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl Я же сказал: ты ДОЛЖЕН УКАЗЫВАТЬ на какой именно лист ты хочешь записывать!
Сейчас ты нажимаешь на кнопку. Фокус остается на кнопке. Объекты чьи родители не указаны пытаются использовать в качестве родителя объект имеющий фокус. То есть у тебя ищется Range("C" & ItemSum.Index) не в листе, а у кнопки.
Почему он ищет не в листе, ведь идет цикл и перебираеться каждый лист.

For Each ItemSum In ActiveWorkbook.Worksheets
Range("A" & ItemSum.Index) = ItemSum.Range("C3")
Range("B" & ItemSum.Index) = ItemSum.Range("C25")
Range("C" & ItemSum.Index) = ItemSum.TextBox1.Text
Range("D" & ItemSum.Index) = ItemSum.Class
Range("E" & ItemSum.Index) = ItemSum.sVal
Range("F" & ItemSum.Index) = ItemSum.SumProv
Range("G" & ItemSum.Index) = ItemSum.Range("D48")
'Range("F" & ItemSum.Index) = ItemSum.Range("C3")
Next ItemSum

Нет данные с листа записанные в ячейках он берет нормально.

White Owl
boka White Owl написал следующее:
Range("C" & ItemSum.Index) = ItemSum.Shapes("TextBox1").Text
выдается ошибка "Object doesn't support this property or method".
Я этого не писал, вообще-то :)

нет это я написал на примере Worksheets("SheetForResults").Range("B4").Value = Worksheets("SheetWithTextBox").Shapes("TextBox1").Text


White Owl Чего? Что такое "переменная в листах"? Значение ячейки? ws.Range("D5").Value например.

White Owl я просто пишу на Делфи. А там Просто если объект находиться на форме, то он автоматически становится его родителем т.е. доступ к нему из другого модуля осуществляется sFIO = Form1.TextBox1.Text и проблем нет. А тут как можно?
...
Рейтинг: 0 / 0
Передача данных с TextBox или переменной в Range
    #33060787
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bokaНет данные с листа записанные в ячейках он берет нормально.
Да, данные с листа он берет нормально. Потому что лист источник указан. А вот лист получатель не указан. Я тебе об этом уже который день твержу!

В присвоении всегда есть две части - слева от знака равенства и справа. То что справа - источник, то что слева - получатель. Ты правильно указываешь источник, но не правильно указываешь получателя.

boka White Owl
boka White Owl написал следующее:
Range("C" & ItemSum.Index) = ItemSum.Shapes("TextBox1").Text
выдается ошибка "Object doesn't support this property or method".
Я этого не писал, вообще-то :)
нет это я написал на примере Worksheets("SheetForResults").Range("B4").Value = Worksheets("SheetWithTextBox").Shapes("TextBox1").Text
Ну! Worksheets("SheetForResults"). Видишь? Почему ты ее упорно выкидываешь?


bokaWhite Owl я просто пишу на Делфи. А там Просто если объект находиться на форме, то он автоматически становится его родителем т.е. доступ к нему из другого модуля осуществляется sFIO = Form1.TextBox1.Text и проблем нет. А тут как можно?
Да, тут так тоже можно. Но если проводить аналогию с твоим макросом, то должно быть что-то вроде Form2.sFIO = Form1.TextBox1.Text . Из которой ты постоянно забываешь написать Form2. Понятно?
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Передача данных с TextBox или переменной в Range
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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