Событие нажатия кнопки в vb - PullRequest
       27

Событие нажатия кнопки в vb

0 голосов
/ 01 февраля 2012

Я новичок в VB.Я хочу сохранить значения в массиве, когда я нажимаю первую кнопку, и отображать результат, когда я нажимаю вторую кнопку.Я успешно сохранил значения в массиве.Но я не могу получить доступ к тому же массиву во втором событии нажатия кнопки.

Dim i As Integer
Dim ag(0 To 7000) As String
Dim bg(0 To 7000) As String

Private CommandButton1_Click()
  i = 0

  Sheets("New").Select
  Range("B2").Select

  While Not IsEmpty(ActiveCell)
    ag(i) = ActiveCell.Value
    i = i + 1
    ActiveCell.Offset(1, 0).Select
  Wend

  i = 0

  Sheets("New").Select
  Range("D2").Select

  While Not IsEmpty(ActiveCell)
    bg(i) = ActiveCell.Value
    i = i + 1
    ActiveCell.Offset(1, 0).Select
  Wend
End Sub

Private CommandButton2_Click()
  UserForm1.Hide
End Sub

Private Sub Cell_Click()
End Sub

Private Sub CommandButton1_Click()
End Sub

Private Sub CommandButton2_Click()
End Sub

Любой может мне помочь, пожалуйста.

1 Ответ

0 голосов
/ 02 февраля 2012

Nimmy

Мой пост не об ответе на ваш главный вопрос :) Если вы посмотрите на комментарий Кена и Коди, вы автоматически поймете, что это за ответ;)

Я не мог не прокомментировать, когда увидел ваш код и ваше заявление о том, что вы новичок. Я помню свои дни, когда я изучал кодирование, и такие форумы, как SO, помогли мне улучшить мои навыки программирования. Таким образом, вы можете рассматривать это как окупаемость: -D

1) В вашем случае это нормально, что вы затеняли i как целое число , но что происходит, когда вы имеете дело со строками, которые намного больше, например 32768 строк. При работе в VBA Excel безопаснее затемнить i на .

2). Выберите - это основная причина ошибок при работе в VBA, не говоря уже о том, что они замедляют работу вашего кода. Тот же код также может быть написан как код, приведенный ниже. Я предполагаю, что между первой строкой и последней строкой нет пустых значений.

Dim i As Long
Dim ag(0 To 7000) As String
Dim bg(0 To 7000) As String
Dim ws As Worksheet

Private CommandButton1_Click()
    Set ws = Sheets("New")

    With ws
        For i = 2 To .Range("B" & .Rows.Count).End(xlUp).Row
            ag(i) = .Range("B" & i).Value
        Next
        For i = 2 To .Range("D" & .Rows.Count).End(xlUp).Row
            bg(i) = .Range("D" & i).Value
        Next
    End With
End Sub

HTH и да, Happy Coding;)

Sid

...