日记首页  | 列表 | 添加日记  | 管理登陆  | 搜索退出 直达底部 
****************************************
2018/12/3vba,最后一行,写入单元格
如何使用vba命令定位到最后一行有内容单元格的下一行。

i=range("A65536").end(xlup).row()+1

这个i就是A列你要的行号
此代码只适用于excel 2003
如果是07以上
65536修改为1048576

追问:那怎么定位那
追答:不懂你的定位是什么概念。

sub aa()
i=range("A65536").end(xlup).row()+1
range("A" & i).Select
msgbox "你需要的是A"& i
end sub


Sub 删除空白列代码()
Application.ScreenUpdating = False
   For i = 1 To 50      '删除第一行“剩余课时”列
    If Cells(1, i) = "剩余课时" Then
        Columns(i).Delete
    End If
   Next      '删除“剩余课时列代码结束
 Dim iC&, x&
 'Columns("Am").Delete
 iC = Cells(1, 256).End(xlToLeft).Column
 For x = iC To 1 Step -1
 'If Cells(3, x) And Cells(4, x) And Cells(5, x) And Cells(6, x) And Cells(7, x) = "" Then Columns(x).Delete
 If Cells(3, x) = "" And Cells(4, x) = "" And Cells(5, x) = "" Then Columns(x).Delete
Next x
For j = 1 To 40      '寻找“已上课时”列的循环
    If Cells(1, j) = "已上课时" Then
   
    ii = Range("A65536").End(xlUp).Row() + 1 '定位到A列最后一行的下一行,ii
     Cells(ii, j - 1) = "合计:"
    End If
   Next      '删除“剩余课时列代码结束
Application.ScreenUpdating = True
End Sub
****************************************
2018/11/30下拉菜单中,关于sheet

vba,下拉菜单,去掉sheet后代码:

Private Sub UserForm_Initialize()
    Dim Myr&, i&
    Dim brr, d, k
    Set d = CreateObject("Scripting.Dictionary")
    Myr = Range("d65536").End(xlUp).Row
    brr = Range("c2:c" & Myr)
    For i = 1 To UBound(brr)
    If brr(i, 1) <> "" Then  '加上这一句防止中间有空值
        d(brr(i, 1)) = ""
        End If
    Next
    k = d.keys
    ComboBox1.List = k
    Set d = Nothing

End Sub


下拉菜单,指定sheet代码:

Private Sub UserForm_Initialize()
    Dim Myr&, i&, nL%       '下拉菜单部分(姓名,星期,时间)
    Dim brr, k
   
    Set d = CreateObject("Scripting.Dictionary")
   
        Myr = Range("v65536").End(xlUp).Row     '名字循环
        brr = Range("v3:v" & Myr).Value         '名字循环
    'brr = Sheets("Sheet1").Range("V3:V30").Value
    Me.ComboBox2.List = brr
   
    With Sheets("Sheet1")                    '星期循环
        nL = .Range("xfd2").End(xlToLeft).Column
        brr = .Range("a2").Resize(1, nL).Value
        For i = 2 To 20
            If brr(1, i) <> "" Then
                Me.ComboBox3.AddItem brr(1, i)
                d(brr(1, i)) = i
            End If
        Next
   
        Myr = .Range("a65536").End(xlUp).Row     '时间循环
        brr = .Range("a1:a" & Myr).Value
        For i = 3 To 22
            If brr(i, 1) <> "" Then  '加上这一句防止中间有空值
                d(brr(i, 1)) = i
                Me.ComboBox1.AddItem brr(i, 1)
            End If
        Next

    End With

'    Set d = Nothing

End Sub


****************************************
2018/11/30在查询课时时,删除掉其他行列

1. vba,在查询课时时,删除掉其他行列,需要复原,如何实现

2. 现在用2套窗口(学生和老师),合并它

3. 在最后增加合计

4. 去掉sheet10,(不指定sheet,每页都可以用)

****************************************
2018/11/29vba问题查改:课程(记录-已确认)

课程(记录-已确认)中,月输出无法正确写入,经查:在sheet1中V列W列发生变动,更改OK。

还要注意29行(日期)

****************************************
2018/11/23自动生成所有文件名
一次性自动生成所有文件名清单的方法

要生成一个文件夹里边所有文件名的清单,其实也十分简单,我们只需要自制一个at批处理命令来生成文件名清单即可。操作方法步骤如下:

一、在其目录里新建一个txt文本文件;

二、然后我们打开这个新建的记事本,然后在里边键入以下代码(大家可以直接复制下面的);

第一种:

@ECHO OFF
tree /F > Ŀ¼.txt

第二种:

 @echo off
dir /b /on >list.txt

三、将以上代码键入或者粘贴到记事本之后,保存为.bat格式

四、完成之后,我们再点击“演示.bat”即可看到会新生成一个list.txt记事本文件,我们双击打开即可看到该文件夹下所有的文件名清单了

****************************************
2018/11/22书籍资源链接网址

收集整理的书籍资源链接:https://pan.baidu.com/s/1slRxOoH密码: jkb7 文件解压密码:jingdukeji

电子书搜集加密打包 之 【MOBI】精品 链接: https://pan.baidu.com/s/1htqlWyC密码: n12s

各种精品RAR:链接: https://pan.baidu.com/s/1qZawAIg密码: 5jxq

拷贝方式:1)用 U~~ 线将设备连接电脑; 2)把书拷贝到如kindle的则是do开头的文件夹) 3)将书籍拷贝进去后,安全弹出设备; 4)PAPER 将自动导入书籍。 把链接复制到电脑浏览器上,进行下载哦,如果出现链接失效的情况尝试两种办法,换一个浏览器或者把杀毒软件关闭

****************************************
2018/11/21vba代码备份,记录-周

vba代码备份

记录-周

课时输入窗体:

Dim d

Private Sub CommandButton1_Click()
    Call 清除当前所在位置的单元格
End Sub


 Private Sub CheckBox1_Change()
   Dim i                    '请假部分(复选框)
   With 课时输入窗体
    For i = 1 To 5
       If .Controls("OptionButton" & i).Value = True Then Exit For
     Next
     If i = 6 Then '初始状态
      .TextBox1 = IIf(.CheckBox1.Value, .CheckBox1.Caption, vbNullString)
     Else
       .TextBox1 = .Controls("OptionButton" & i).Caption & IIf(.CheckBox1.Value, .CheckBox1.Caption, vbNullString)
     End If
   End With
 End Sub

 Private Sub OptionButton1_Click()
   Call CheckBox1_Change
 End Sub

 Private Sub OptionButton2_Click()
   Call CheckBox1_Change
 End Sub

 Private Sub OptionButton3_Click()
   Call CheckBox1_Change
 End Sub

 Private Sub OptionButton4_Click()
   Call CheckBox1_Change
 End Sub

 Private Sub OptionButton5_Click()
   Call CheckBox1_Change
 End Sub


Private Sub 输入到指定行列_Click()
   
    Dim i, j, nL%, nR%
    Dim cKc$, cXm$, xq$, cXq$, Arr()
   
   
    cKc = Me.TextBox1.Value
    xq = ComboBox3.Value
    nR = d(ComboBox1.Value) '根据时间确定写入的行号
    nL = d(xq) '列号
    cXm = ComboBox2.Value
    If cKc = "" Or cXm = "" Or nR = 0 Or nL = 0 Then
        MsgBox ("没有对应数据")
        Exit Sub
    End If
   
    With Sheets("Sheet1")      '写入Sheet2中
        Arr = .Range("a2").Resize(1, nL + 3).Value
        For i = nL To nL + 3
            If Arr(1, i) <> "" Then cXq = Arr(1, i)
           
            If cXq = xq Then
                If .Cells(nR, i).Value = "" Then
                    .Cells(nR, i).Value = cKc & vbCrLf & cXm
                        Cells(nR, i).Select     '读取(单元格显示到屏幕中央?
                    Exit For
                ElseIf .Cells(nR, i).Value = cKc & vbCrLf & cXm Then
                    i = nL + 3
                End If
            End If
        Next
        Cells(nR, i).Select
        If i > nL + 3 Then MsgBox ("已经有数据")
    End With
End Sub


Private Sub 输入到指定行列_3列_Click()
   
    Dim i, j, nL%, nR%
    Dim cKc$, cXm$, xq$, Arr()
   
   
    cKc = Me.TextBox1.Value
    xq = ComboBox3.Value
    nR = d(ComboBox1.Value)
    nL = d(xq)
    cXm = ComboBox2.Value
    If cKc = "" Or cXm = "" Or nR = 0 Or nL = 0 Then
        MsgBox ("没有对应数据")
        Exit Sub
    End If
   
    With Sheets("Sheet2")
        Arr = .Range("a2").Resize(1, nL + 2).Value
        For i = nL To nL + 2
            If Arr(1, i) = xq Or Arr(1, i) = "" Then
                If .Cells(nR, i).Value = "" Then
                    .Cells(nR, i).Value = cKc & vbCrLf & cXm
                        Cells(nR, i).Select     '读取(单元格显示到屏幕中央)
                    Exit For
                ElseIf .Cells(nR, i).Value = cKc & vbCrLf & cXm Then
                    i = nL + 2
                End If
            End If
        Next
        If i > nL + 2 Then MsgBox ("已经有数据")
    End With
End Sub


  Private Sub 输入到指定行列_自己写的_Click()

  Dim i, j
  Myr = Range("A65535").End(3).Row    '逐行读取到最后一行
   For i = 2 To Myr          '文档第2行起,中截止到最后一行
  'For i = 2 To 100          '要注意行数,文档中截止到35行
    If ComboBox1.Value = Cells(i, 1) Then 'And TextBox1.Value = Cells(i, 4) Then
      For j = 2 To 15          'j表示日期的列数,最多31列,从5开始1日
        If ComboBox3.Value = Cells(2, j) Then
          Cells(i, j).Select        '读取(单元格显示到屏幕中央)
          If Len(Cells(i, j)) = 0 Then
          Cells(i, j) = TextBox1.Value & vbCrLf & ComboBox2.Value: GoTo XX        '第一列位置
         
          '[b7] = [b5] & vbCrLf & [b6]
         
          ElseIf Len(Cells(i, j)) > 0 Then MsgBox ("已经有数据")
          ActiveCell.Offset(0, 1).Value = TextBox1.Value & vbCrLf & ComboBox2.Value: GoTo XX   '第2列位置
            Else
          If Len(ActiveCell.Offset(0, 1)) > 0 Then MsgBox ("已经有数据,注意是否周日")  '第3列位置
          ActiveCell.Offset(0, 2).Value = ComboBox2.Value
         
          'MsgBox ("ok")
          GoTo XX
           Exit For
        End If
        End If
        'End If
      Next j
    End If
  Next i
 
  MsgBox ("没有对应数据")
XX:
End Sub



Private Sub UserForm_Initialize()
    Dim Myr&, i&, nL%
    Dim brr, k
   
    Set d = CreateObject("Scripting.Dictionary")
   
        Myr = Range("v65536").End(xlUp).Row     '名字循环
        brr = Range("v3:v" & Myr).Value         '名字循环
    'brr = Sheets("Sheet1").Range("V3:V30").Value
    Me.ComboBox2.List = brr
   
    With Sheets("Sheet1")
        nL = .Range("xfd2").End(xlToLeft).Column
        brr = .Range("a2").Resize(1, nL).Value
        For i = 2 To nL
            If brr(1, i) <> "" Then
                Me.ComboBox3.AddItem brr(1, i)
                d(brr(1, i)) = i
            End If
        Next
   
        Myr = .Range("a65536").End(xlUp).Row
        brr = .Range("a1:a" & Myr).Value
        For i = 3 To Myr
            If brr(i, 1) <> "" Then  '加上这一句防止中间有空值
                d(brr(i, 1)) = i
                Me.ComboBox1.AddItem brr(i, 1)
            End If
        Next

    End With

'    Set d = Nothing

End Sub

****************************************
2018/11/19修脚剩余
修脚,今天充了100,剩余139
****************************************
2018/11/19Excel窗体工具条控件介绍

vba窗体工具箱控件介绍

网址:http://www.office68.com/excel/23957.html

****************************************
2018/11/18vba循环自动判断行
Myr = Range("B65535").End(3).Row    '逐行读取到最后一行
For i = 2 To Myr          '文档B列第2行起,中截止到最后一行
  共有日记399篇,每页10篇,分29/40页   9首页 3上页 下页4 尾页:  转到: