日记首页
|
列表
|
添加日记
|
管理登陆
标题:vba代码备份,记录-周
<p>vba代码备份</p><p>记录-周</p><p>课时输入窗体:</p><p>Dim d</p><p>Private Sub CommandButton1_Click()<br> Call 清除当前所在位置的单元格<br>End Sub</p><p><hr></p><p> Private Sub CheckBox1_Change()<br> Dim i '请假部分(复选框)<br> With 课时输入窗体<br> For i = 1 To 5<br> If .Controls("OptionButton" & i).Value = True Then Exit For<br> Next<br> If i = 6 Then '初始状态<br> .TextBox1 = IIf(.CheckBox1.Value, .CheckBox1.Caption, vbNullString)<br> Else<br> .TextBox1 = .Controls("OptionButton" & i).Caption & IIf(.CheckBox1.Value, .CheckBox1.Caption, vbNullString)<br> End If<br> End With<br> End Sub</p><p> Private Sub OptionButton1_Click()<br> Call CheckBox1_Change<br> End Sub</p><p> Private Sub OptionButton2_Click()<br> Call CheckBox1_Change<br> End Sub</p><p> Private Sub OptionButton3_Click()<br> Call CheckBox1_Change<br> End Sub</p><p> Private Sub OptionButton4_Click()<br> Call CheckBox1_Change<br> End Sub</p><p> Private Sub OptionButton5_Click()<br> Call CheckBox1_Change<br> End Sub</p><p><hr></p><p>Private Sub 输入到指定行列_Click()<br> <br> Dim i, j, nL%, nR%<br> Dim cKc$, cXm$, xq$, cXq$, Arr()<br> <br> <br> cKc = Me.TextBox1.Value<br> xq = ComboBox3.Value<br> nR = d(ComboBox1.Value) '根据时间确定写入的行号<br> nL = d(xq) '列号<br> cXm = ComboBox2.Value<br> If cKc = "" Or cXm = "" Or nR = 0 Or nL = 0 Then<br> MsgBox ("没有对应数据")<br> Exit Sub<br> End If<br> <br> With Sheets("Sheet1") '写入Sheet2中<br> Arr = .Range("a2").Resize(1, nL + 3).Value<br> For i = nL To nL + 3<br> If Arr(1, i) <> "" Then cXq = Arr(1, i)<br> <br> If cXq = xq Then<br> If .Cells(nR, i).Value = "" Then<br> .Cells(nR, i).Value = cKc & vbCrLf & cXm<br> Cells(nR, i).Select '读取(单元格显示到屏幕中央?<br> Exit For<br> ElseIf .Cells(nR, i).Value = cKc & vbCrLf & cXm Then<br> i = nL + 3<br> End If<br> End If<br> Next<br> Cells(nR, i).Select<br> If i > nL + 3 Then MsgBox ("已经有数据")<br> End With<br>End Sub</p><p><hr></p><p>Private Sub 输入到指定行列_3列_Click()<br> <br> Dim i, j, nL%, nR%<br> Dim cKc$, cXm$, xq$, Arr()<br> <br> <br> cKc = Me.TextBox1.Value<br> xq = ComboBox3.Value<br> nR = d(ComboBox1.Value)<br> nL = d(xq)<br> cXm = ComboBox2.Value<br> If cKc = "" Or cXm = "" Or nR = 0 Or nL = 0 Then<br> MsgBox ("没有对应数据")<br> Exit Sub<br> End If<br> <br> With Sheets("Sheet2")<br> Arr = .Range("a2").Resize(1, nL + 2).Value<br> For i = nL To nL + 2<br> If Arr(1, i) = xq Or Arr(1, i) = "" Then<br> If .Cells(nR, i).Value = "" Then<br> .Cells(nR, i).Value = cKc & vbCrLf & cXm<br> Cells(nR, i).Select '读取(单元格显示到屏幕中央)<br> Exit For<br> ElseIf .Cells(nR, i).Value = cKc & vbCrLf & cXm Then<br> i = nL + 2<br> End If<br> End If<br> Next<br> If i > nL + 2 Then MsgBox ("已经有数据")<br> End With<br>End Sub</p><p><hr></p><p> Private Sub 输入到指定行列_自己写的_Click()</p><p> Dim i, j<br> Myr = Range("A65535").End(3).Row '逐行读取到最后一行<br> For i = 2 To Myr '文档第2行起,中截止到最后一行<br> 'For i = 2 To 100 '要注意行数,文档中截止到35行<br> If ComboBox1.Value = Cells(i, 1) Then 'And TextBox1.Value = Cells(i, 4) Then<br> For j = 2 To 15 'j表示日期的列数,最多31列,从5开始1日<br> If ComboBox3.Value = Cells(2, j) Then<br> Cells(i, j).Select '读取(单元格显示到屏幕中央)<br> If Len(Cells(i, j)) = 0 Then<br> Cells(i, j) = TextBox1.Value & vbCrLf & ComboBox2.Value: GoTo XX '第一列位置<br> <br> '[b7] = [b5] & vbCrLf & [b6]<br> <br> ElseIf Len(Cells(i, j)) > 0 Then MsgBox ("已经有数据")<br> ActiveCell.Offset(0, 1).Value = TextBox1.Value & vbCrLf & ComboBox2.Value: GoTo XX '第2列位置<br> Else<br> If Len(ActiveCell.Offset(0, 1)) > 0 Then MsgBox ("已经有数据,注意是否周日") '第3列位置<br> ActiveCell.Offset(0, 2).Value = ComboBox2.Value<br> <br> 'MsgBox ("ok")<br> GoTo XX<br> Exit For<br> End If<br> End If<br> 'End If<br> Next j<br> End If<br> Next i<br> <br> MsgBox ("没有对应数据")<br>XX:<br>End Sub</p><p><hr><br>Private Sub UserForm_Initialize()<br> Dim Myr&, i&, nL%<br> Dim brr, k<br> <br> Set d = CreateObject("Scripting.Dictionary")<br> <br> Myr = Range("v65536").End(xlUp).Row '名字循环<br> brr = Range("v3:v" & Myr).Value '名字循环<br> 'brr = Sheets("Sheet1").Range("V3:V30").Value<br> Me.ComboBox2.List = brr<br> <br> With Sheets("Sheet1")<br> nL = .Range("xfd2").End(xlToLeft).Column<br> brr = .Range("a2").Resize(1, nL).Value<br> For i = 2 To nL<br> If brr(1, i) <> "" Then<br> Me.ComboBox3.AddItem brr(1, i)<br> d(brr(1, i)) = i<br> End If<br> Next<br> <br> Myr = .Range("a65536").End(xlUp).Row<br> brr = .Range("a1:a" & Myr).Value<br> For i = 3 To Myr<br> If brr(i, 1) <> "" Then '加上这一句防止中间有空值<br> d(brr(i, 1)) = i<br> Me.ComboBox1.AddItem brr(i, 1)<br> End If<br> Next</p><p> End With</p><p>' Set d = Nothing</p><p>End Sub<br></p>