Visual basic вывод листа excel

Студворк — интернет-сервис помощи студентам

Всем добрый вечер.
Собственно, проблема вот в чем, пользователь вводит количество столбцов и строк массива, после чего сам же вводит значения
Как сделать так, чтобы это выводилось на лист excela?

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub massiv()
Dim A() As Integer
Dim i, j As Integer
Dim n, m As Single
n = InputBox("Введите кол-во столбцов массива")
m = InputBox("Введите кол-во строк массива")
ReDim Preserve A(n, m)
For i = 1 To n
  For j = 1 To m
  A(i, j) = InputBox("Введите значения массива  А ")
Next j
Next i
 
End Sub

Заранее благодарю за помощь

Добавлено через 15 минут

Visual Basic
1
Worksheets("Лист1").Cells(1, 1).Resize(n, m).Value = A

Вроде бы добавил это после next i, выводит на лист, но проблема теперь в другом, почему при вводе первых трех значений — например ввожу подряд 1-2-3-4 с матрицей 2х2, он выдает на лист 0 0 0 и 4-ый элемент 1, не понимаю, к сожалению

Вот чей-то код, только выбор не по клику, а по номеру в списке.

Код
Sub SwitchExcelWindows()
    Dim i As Integer
    Dim n As Integer
    Dim s As String
    Dim v As Variant

    n = Windows.Count
    s = "Список открытых окон для выбора:"
    For i = 1 To n
        s = s & Chr(10) & i & ")  " & Windows(i).Caption
    Next
    s = s & Chr(10) & "Задайте номер окна из списка от 1 до " & n
    v = Application.InputBox(prompt:=s, Type:=2)
    i = Val(v)
    If i >= 1 And i <= n Then
        Windows(i).Activate
    End If
End Sub

Полагаю. для листов можно сделать аналогично.

Изменено: TheBestOfTheBest12.01.2018 12:07:02

Вывод результатов программы на лист Excel

Lebron300

Дата: Суббота, 20.12.2014, 14:57 |
Сообщение № 1

Группа: Пользователи

Ранг: Новичок

Сообщений: 19


Репутация:

0

±

Замечаний:
40% ±


Excel 2003

Программа ставит диагноз пациенту.. нужно чтобы результаты выводились на 2 лист в столбик «Диагноз» по нажатию кнопки «Вывести диагноз на лист».
[vba]

Код

Dim NORM As Range, R, T
     Set NORM = Range(«НОРМА»)
     For R = 1 To 7
         Debug.Print Controls(«TextBox» & R).Text
         T = CDbl(Replace(Controls(«TextBox» & R).Text, «.», «,»))

            If T < NORM(R, 2) Or T > NORM(R, 3) Then
             If Val(TextBox2.Text) < 8 Then
                 st = «Легкая степень тяжести.»
             ElseIf Val(TextBox2.Text) > 14 Then
                 st = «Тяжелый случай.»
             Else
                 st = «Средняя степень тяжести.»
                 End If
             End If
         If T < NORM(R, 2) Or T > NORM(R, 3) Then
             If Val(TextBox5.Text) <= 3 Then
             st = st & » » & «1 тип»
             ElseIf Val(TextBox5.Text) > 3 Then
             st = st & » » & «2 тип»
         End If
             MsgBox «Пациент болен. Сахарный диабет!» & vbLf & st, 64, NORM(R, 1)
             Exit Sub
         End If
     Next R
     MsgBox «Пациент здоров!», 64, «»
End Sub

    Private Sub UserForm_Initialize()
     ComboBox1.List = Worksheets(2).Range(«A2», Worksheets(2).Cells(Rows.Count, «A»).End(xlUp)).Value
End Sub
Private Sub ComboBox1_Change()
With Лист2
TextBox1 = .Cells(ComboBox1.ListIndex + 2, 2)
TextBox2 = .Cells(ComboBox1.ListIndex + 2, 3)
TextBox3 = .Cells(ComboBox1.ListIndex + 2, 4)
TextBox4 = .Cells(ComboBox1.ListIndex + 2, 5)
TextBox5 = .Cells(ComboBox1.ListIndex + 2, 6)
TextBox6 = .Cells(ComboBox1.ListIndex + 2, 7)
TextBox7 = .Cells(ComboBox1.ListIndex + 2, 8)
End With
End Sub
Private Sub CommandButton1_Click()
For Each Control In Me.Controls
     On Error Resume Next
         Control.Value = «»
     On Error GoTo 0
Next
End Sub

‘Процедура закрытия диалогового окна

Private Sub CommandButton3_Click()
     UserForm2.Hide
End Sub
  Private Sub CommandButton4_Click() ‘Кнопка ДИАГНОЗ
         If ComboBox1.Text = «» Then
               MsgBox «Пациент не выбран», vbCritical, «Ошибка»
         Else
               MsgBox «Производим обработку данных пациента » & _
                  ComboBox1.Text, vbExclamation, «Пример»
         End If
         End Sub

     Private Sub UserForm2_Initialize()
ComboBox1.RowSource = Лист2.Range(«a1»).CurrentRegion.Columns(1).Address
End Sub

[/vba]

К сообщению приложен файл:

VBA.xls
(64.5 Kb)

Сообщение отредактировал Lebron300Воскресенье, 21.12.2014, 10:17

 

Ответить

ikki

Дата: Суббота, 20.12.2014, 17:25 |
Сообщение № 2

Группа: Друзья

Ранг: Старожил

Сообщений: 1906


Репутация:

504

±

Замечаний:
0% ±


Excel 2003, 2010

и вам здравствуйтепожалуйста.
а для «нужно» другой раздел есть.
Работа/Фриланс


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki

 

Ответить

Lebron300

Дата: Понедельник, 22.12.2014, 09:54 |
Сообщение № 3

Группа: Пользователи

Ранг: Новичок

Сообщений: 19


Репутация:

0

±

Замечаний:
40% ±


Excel 2003

Ну хоть намекните кто нибудь, как сделать?

 

Ответить

Pelena

Дата: Понедельник, 22.12.2014, 10:17 |
Сообщение № 4

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

[vba]

Код

Private Sub CommandButton5_Click()
     Dim NORM As Range, R, T
     Set NORM = Range(«НОРМА»)
     For R = 1 To 7
         Debug.Print Controls(«TextBox» & R).Text
         T = CDbl(Replace(Controls(«TextBox» & R).Text, «.», «,»))

         If T < NORM(R, 2) Or T > NORM(R, 3) Then
             If Val(TextBox2.Text) < 8 Then
                 st = «Легкая степень тяжести.»
             ElseIf Val(TextBox2.Text) > 14 Then
                 st = «Тяжелый случай.»
             Else
                 st = «Средняя степень тяжести.»
                 End If
             End If
         If T < NORM(R, 2) Or T > NORM(R, 3) Then
             If Val(TextBox5.Text) <= 3 Then
             st = st & » » & «1 тип»
             ElseIf Val(TextBox5.Text) > 3 Then
             st = st & » » & «2 тип»
         End If
             Лист2.Cells(ComboBox1.ListIndex + 2, 9) = «Пациент болен. Сахарный диабет!» & vbLf & st
             Exit Sub
         End If
     Next R
     Лист2.Cells(ComboBox1.ListIndex + 2, 9) = «Пациент здоров!»
End Sub

[/vba]


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

Lebron300

Дата: Понедельник, 22.12.2014, 13:30 |
Сообщение № 5

Группа: Пользователи

Ранг: Новичок

Сообщений: 19


Репутация:

0

±

Замечаний:
40% ±


Excel 2003

Pelena, огромное спасибо… какой раз уже выручаешь. Еще 1 вопросик: можно ли сделать, чтобы при нажатии сразу всем пациентам диазноз ставила программа и выводила на лист?
[moder]Нажатии всем пациентам куда?
В любом случае — это новый вопрос.
Эта тема закрыта, а Вам замечание за нарушение п. 5.q Правил форума.

Сообщение отредактировал _Boroda_Понедельник, 22.12.2014, 14:15

 

Ответить

Вывод
(передача пользователю) результатов
работы программы и других сообщений
осуществляется через диалоговое
окно сообщений.

Для
организации вывода информации используется
встроенная функция MsgBox.

Рассмотрим
варианты ее применения.

1.    y
=
Sqr(16)

MsgBox y

2.    S
= 99

MsgBox
(“
S=
” &
S)

это
знак
конкатенации

амперсанд;

применяется
для объединения нескольких строк в
одну

3.    a
= 5: b = 101

MsgBox
(«a=»

& a & » » & «b=» &

b)

4.   MsgBox
(«a=»
& a & Chr(13) & «b=» & b)

с
помощью этой функции вводится символ
перехода

на
новую строку
(преобразует
число в символ)

Работа с объектами Excel

Объект
это
базовая категория в объектно-ориентированном
прог-раммировании.

Объектная
модель Excel

представляет собой иерархию объектов,
подчиненных одному объекту Application,
который соответствует самому
приложению Excel. Объектами Excel
являются
рабочие книги, рабочие листы, диаграммы,
диапазоны ячеек, ячейки и т. д.

VBA
может программно управлять любым из
этих объектов.

Каждый
объект
обладает
набором свойств,
методов
и событий.

Свойство
– это характеристика или параметр
объекта.

Метод
– это действие, которое может выполнять
объект.

Событие
– это действие, на которое объект
реагирует автоматически.

Управлять
объектом в
VBA
можно 3 путями:

  • изменяя
    свойства объекта;

  • активизируя
    метод, связанный с объектом;

  • определяя
    процедуру, запуск которой произойдет
    как отклик на событие.

Вывод
информации в ячейку Excel

Ячейка
как объект Excel в VBA-программе
обозначается Cells(i,
j)
,
где i

номер строки, j
номер столбца электронной таблицы.

Y


Значение
Y

будет
выведено
на
активный лист рабочей книги Excel в
ячейку B3

= 0.01

Cells(3,
2) = Y

С


Переменной
B
будет
присвоено значение,


которое
хранится в ячейке С5


(т.
е. содержимое ячейки С5)

читывание информации из
ячейки Excel

B = Cells(5,
3)

Средство vba для ввода информации

Ввод
информации от пользователя осуществляется
через диалоговое окно ввода. Реализуется
с помощью встроенной функции InputBox.

Dim
x As Single

x= Val (InputBox («Введите
x»))

Функция
InputBox
возвращает последовательность символов,
введенную в поле ввода (15)
как данные типа String
(строковый). Встроенная функция Val()
преобразует
строковое значение из поля ввода в
числовое.

Линейные вычислительные процессы

Линейный
алгоритм

характеризуется строгой последовательностью
реализации блоков в порядке их
расположения в схеме – сверху – вниз.
Условные блоки отсутствуют. Каждый
блок выполняется однократно.

Пример  1

Вычислить значение функции

при
k
= 33,5 x
= 17

1.   Составим
алгоритм решения задачи.

2.   В
окне редактора кода введем программный
код:

Option
Explicit

Sub
Линейный_процесс
()

Dim
k As
Single,
x As
Single,
y As
Single
‘объявление
переменных

k
= 3.5

x
= Val
(InputBox
(«Введите
значение x»))

y
= k
* Exp(Sin(x))

MsgBox
«y=»
& y

вывод
результата в диалоговое окно

End
Sub

Команда
Option
Explicit
обязывает
объявлять все переменные в данной
программе. Может размещаться только в
разделе объявлений модуля.

Комментарии
–пояснения,
следуют за знаком «апостроф» .
Игнорируются компилятором.

Соседние файлы в папке VBA

  • #
  • #
  • #

Понравилась статья? Поделить с друзьями:
  • Visual basic в excel возможности
  • Visual basic в excel 2021
  • Visual basic for excel 2010
  • Visual basic for excel 2007
  • Visual basic for applications excel скачать