это мой первый пост о чем-то подобном. Я использую 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