Закрытие пользовательской формы, которая добавляет данные, приводит к сбою Excel - PullRequest
0 голосов
/ 28 мая 2020

это мой первый пост о чем-то подобном. Я использую Excel 2016. У меня есть пользовательская форма, которая, как описано в заголовке, превращает excel cra sh при закрытии. Пока что у меня нет кнопки, чтобы открыть или закрыть его, так как я все еще работаю над этим, поэтому я только что запустил его в VBA.

Проблема возникает в той части, над которой я сейчас работаю. Когда вы go переходите на текущую вкладку и пытаетесь добавить новую запись, иногда данные добавляются на место без проблем. Но когда я нажимаю x на пользовательской форме (а не на кнопке в ней), я вижу курсор обработки и бум, он закрывается.

Вот код, который я сделал до сих пор:

Option Explicit
-----
Private Sub CommandButton1_Click()

Dim wks As Worksheet
Dim run As Long

Worksheets("Running").Activate
Set wks = ThisWorkbook.Sheets("Running")
run = wks.Range("A1").Value

'''''VALIDATION'''''

If Me.TextBox1.Value = "" Then
    MsgBox "Enter the date that you did this run", vbCritical
    Exit Sub
End If

If Me.TextBox2.Value = "" Then
    MsgBox "Enter the length of the run you completed on " & Me.TextBox1.Value, vbCritical
    Exit Sub
End If

If Me.TextBox3.Value = "" Then
    MsgBox "Enter the average pace of your " & Me.TextBox2.Value & " mile run on " & Me.TextBox1.Value, vbCritical
    Exit Sub
End If

If Me.TextBox4.Value = "" Then
    MsgBox "Enter the total time of your " & Me.TextBox2.Value & " mile run on " & Me.TextBox1.Value, vbCritical
    Exit Sub
End If

'''''ENTERING THE DATA'''''

wks.Range("A" & run + 3).Value = Me.TextBox1.Value
wks.Range("B" & run + 3).Value = Me.TextBox2.Value
wks.Range("C" & run + 3).Value = Me.TextBox3.Value
wks.Range("D" & run + 3).Value = Me.TextBox4.Value

End Sub
------------------------------
Private Sub ListBox4_Change()

Dim wks As Worksheet
Dim bp As Long
Dim legs As Long
Dim core As Long
Dim chest As Long
Dim arms As Long
Dim back As Long
Dim shoulder As Long
Dim full As Long

Worksheets("Lifting").Activate
Set wks = ThisWorkbook.Sheets("Lifting")

bp = wks.Range("H1").Value
legs = wks.Range("J1").Value
core = wks.Range("K1").Value
chest = wks.Range("L1").Value
arms = wks.Range("M1").Value
back = wks.Range("N1").Value
shoulder = wks.Range("O1").Value
full = wks.Range("P1").Value

Me.ListBox3.ColumnCount = 1
If Me.ListBox4.Value = "Legs" Then
    Me.ListBox3.RowSource = "J3:J" & legs + 2
ElseIf Me.ListBox4.Value = "Core" Then
    Me.ListBox3.RowSource = "K3:K" & core + 2
ElseIf Me.ListBox4.Value = "Chest" Then
    Me.ListBox3.RowSource = "L3:L" & chest + 2
ElseIf Me.ListBox4.Value = "Arms" Then
    Me.ListBox3.RowSource = "M3:M" & arms + 2
ElseIf Me.ListBox4.Value = "Back" Then
    Me.ListBox3.RowSource = "N3:N" & back + 2
ElseIf Me.ListBox4.Value = "Shoulders" Then
    Me.ListBox3.RowSource = "O3:O" & shoulder + 2
ElseIf Me.ListBox4.Value = "Full Body" Then
    Me.ListBox3.RowSource = "P3:P" & full + 2
End If

End Sub
-------------------------------------------
Private Sub MultiPage1_Change()

Dim wks As Worksheet
Dim bp As Long
Dim legs As Long
Dim core As Long
Dim chest As Long
Dim arms As Long
Dim back As Long
Dim shoulder As Long
Dim full As Long
Dim run As Long

If Me.MultiPage1.Value = 0 Then
    Worksheets("Running").Activate
    Set wks = ThisWorkbook.Sheets("Running")
    run = wks.Range("A1").Value
    Me.TextBox1.Value = Date
    Me.ListBox1.ColumnCount = 4
    Me.ListBox1.RowSource = "A2:D" & run + 2
ElseIf Me.MultiPage1.Value = 1 Then
    Worksheets("Lifting").Activate
    Set wks = ThisWorkbook.Sheets("Lifting")
    bp = wks.Range("H1").Value
    legs = wks.Range("J1").Value
    core = wks.Range("K1").Value
    chest = wks.Range("L1").Value
    arms = wks.Range("M1").Value
    back = wks.Range("N1").Value
    shoulder = wks.Range("O1").Value
    full = wks.Range("P1").Value
    Me.ListBox4.ColumnCount = 1
    Me.ListBox4.RowSource = "H3:H" & bp + 2
    Me.ListBox3.ColumnCount = 1
    Me.ListBox3.RowSource = "J3:J" & legs + 2
    Me.TextBox8.Value = Date
End If

End Sub
----------------------------------
Private Sub UserForm_Initialize()

'''''SETTING ALL VARIABLES'''''

Dim wks As Worksheet
Dim bp As Long
Dim legs As Long
Dim core As Long
Dim chest As Long
Dim arms As Long
Dim back As Long
Dim shoulder As Long
Dim full As Long

Me.MultiPage1.Value = 1
Worksheets("Lifting").Activate
Set wks = ThisWorkbook.Sheets("Lifting")

bp = wks.Range("H1").Value
legs = wks.Range("J1").Value
core = wks.Range("K1").Value
chest = wks.Range("L1").Value
arms = wks.Range("M1").Value
back = wks.Range("N1").Value
shoulder = wks.Range("O1").Value
full = wks.Range("P1").Value

'''''FILLING ALL LIST BOXES'''''

Me.ListBox4.ColumnCount = 1
Me.ListBox4.RowSource = "H3:H" & bp + 2

Me.ListBox3.ColumnCount = 1
Me.ListBox3.RowSource = "J3:J" & legs + 2   ''IN THE FUTURE THIS WILL HAVE TO BE AN IF LOOP

Me.TextBox8.Value = Date
Me.ListBox4.Value = "Legs"

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...