Получение данных в форму VBA из ячейки Excel

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

lisa-alisa
Сообщения: 12
Зарегистрирован: 08 апр 2008, 18:48

Здравствуйте.
Есть книга Excel, там сводные рассчеты и ячейка итогового значения.
Значение в ячейке изменяется при выполнении подсчетов.
Нужно получать в форму ее значение (привязать к метке или textbox) , как это можно сделать?
Заранее спасибо.
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

Ну, если Вы просто хотите получить в TextBox значение ячейки листа, напишите так: TextBox1.Text = Sheets("Лист1").Range("A1").Value. Если же Вам нужно отслеживать изменение данных в ячейке в динамике, необходимо позаботиться об обновлении значения TextBox по какому - либо признаку.
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
lisa-alisa
Сообщения: 12
Зарегистрирован: 08 апр 2008, 18:48

Да, там изменяются данные.....Хотя даже когда прописываю просто ячейку с неизменяемым параметром, ничего не выводится(
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

В таком случае надо смотреть Ваш код. Выложите хотя бы фрагмент, иначе это разговор "ни о чем".
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
lisa-alisa
Сообщения: 12
Зарегистрирован: 08 апр 2008, 18:48

накосячила, конечно..очень давно с вижуалом не общалась, это пока все что есть.

Private Sub CommandButton1_Click()

Calculate


End Sub

Private Sub TextBox13_Change()
TextBox1.Text = Sheets("Имитация").Range("D61").Value
End Sub



Private Sub UserForm_Click()

Windows("Имитация").Activate


Range("B3").Select

ActiveCell.FormulaA18 = "стиомость технической поддержки"


Range("B4").Select

ActiveCell.FormulaA19 = "Полная стоимость в год"

Range("B5").Select

ActiveCell.FormulaI19 = "доход в месяц"

Range("B6").Select

ActiveCell.FormulaD18 = "запросы"

Range("B7").Select

ActiveCell.FormulaE18 = "посещаемость"

Range("B8").Select

ActiveCell.FormulaF18 = "конверсия"


frmUserForm1.Show
End Sub
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

lisa-alisa, извините, честно говоря - ничего не понял :confused:
Из всего Вашего кода удалось получить только это

Код: Выделить всё

Private Sub UserForm_Click()
Worksheets("Имитация").Activate
Range("B3").Formula = "стиомость технической поддержки"
Range("B4").Formula = "Полная стоимость в год"
Range("B5").Formula = "доход в месяц"
Range("B6").Formula = "запросы"
Range("B7").Formula = "посещаемость"
Range("B8").Formula = "конверсия"

frmUserForm1.Show
    
End Sub
Private Sub TextBox13_Change()
TextBox1.Text = Sheets("Имитация").Range("A1").Value
End Sub
а что куда... :confused:
А строка TextBox1.Text = Sheets("Имитация").Range("A1").Value работает. Но на событие Change объекта TextBox13.
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
lisa-alisa
Сообщения: 12
Зарегистрирован: 08 апр 2008, 18:48

ну дело в том, что мне нужно не организовать работу таблицы через форму, а только задать через нее параметры(это-то как раз получается), при нажатии кнопки - скалькулировать в Excel(тоже работает)
и получить в форму(в этот вот текстбокс) данные из 1 ячейки, которая и изменяется при подсчете каждый раз.
lisa-alisa
Сообщения: 12
Зарегистрирован: 08 апр 2008, 18:48

В принципе можно даже не писать
"Range("B3").Formula = "стиомость технической поддержки"" и прочее - задать через ControlSource в опциях, тоже работает, но получить значение.....
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

Ну тогда, наверное, так ?

Код: Выделить всё

Private Sub CommandButton1_Click()
Calculate
TextBox1.Text = Sheets("Имитация").Range("A1").Value
End Sub
где Range("A1") - ячейка с данными, которые Вы хотите увидеть в TextBox1
или все-таки что-то другое?
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
lisa-alisa
Сообщения: 12
Зарегистрирован: 08 апр 2008, 18:48

Да! результат выводится. Только не изменяется при пересчете больше...хм..

вот основная таблица, потому что трудно объяснить, да и долго...
в форме нужно было сделать 12 текстобоксов, куда водятся параметры - это через ControlSource получалось
на одну кнопку - подсчет - работало через Calculate.
и в отдельный текстбокс - результат из С59. Но при нажатии подсчета - он изменяется в Excel таблице, а в форме ничего не происходит.

если не сложно, можете глянуть, если нет - не стоит.
Ответить