精华内容
下载资源
问答
  • VBA 设置单元格格式

    千次阅读 2019-05-21 15:37:18
    庆年工坊 知道合伙人互联网行家推荐于2017-10-02 1 2 3 4 5 ... [a1].NumberFormatLocal="@"'设置A1单元格为文本格式 [b1].NumberFormatLocal="yyyy/m/d"'设置B1单...

    庆年工坊 
    知道合伙人互联网行家 推荐于2017-10-02

    1

    2

    3

    4

    5

    6

    7

    8

    Sub s()

        [a1].NumberFormatLocal = "@" '设置A1单元格为文本格式

        [b1].NumberFormatLocal = "yyyy/m/d" '设置B1单元格为日期格式

        [c1].NumberFormatLocal = "[$-F400]h:mm:ss AM/PM" '设置C1单元格为时间格式

        [d1].NumberFormatLocal = "0.00%" '设置D1单元格为百分比格式

        [e1].NumberFormatLocal = "0.00E+00" '设置E1单元格为科学记数法格式

        [f1].NumberFormatLocal = "G/通用格式" '设置F1单元格为常规格式

    End Sub

    展开全文
  • VBA 单元格基本操作 - 值的判断

    千次阅读 2020-08-05 23:21:43
    运行后就会弹出个警告框,提示用户输入内容,输入后就会A1单元格显示了,但是也存在一个问题,就是取消后呢,原来A1单元格的内容就会被清空。 所以改良一下,也把“输入数字这个功能再完善一下”。 Sub ...

    继续讲讲单元格的操作

    一、提示用户输入值

    Sub SetValue()
        Sheets("sheet3").Range("a1") = InputBox("输入一个数字")
    End Sub

    运行后就会弹出个警告框,提示用户输入内容,输入后就会在A1单元格显示了,但是也存在一个问题,就是取消后呢,原来在A1单元格的内容就会被清空。

    所以改良一下,也把“输入数字这个功能再完善一下”。

    Sub SetValue()
        Dim myInput As Variant
        myInput = InputBox("输入一个数字")
        If myInput <> "" Then
            If IsNumeric(myInput) Then
                Sheets("sheet3").Range("a1") = myInput
            Else
                MsgBox "输入的不是数字"
            End If
        Else
            MsgBox "输入的内容为空值"
        End If
    End Sub

     

    在判断是否是数字上,如果用WorksheetFunction.IsNumber判断可能会出错。用户在输入123后,WorksheetFunction.IsNumber仍然会识别成文本格式。经过资料查询,解释是这样的:

    WorksheetFunction.IsNumber:函数中的数值参数是无法转换的。例如,大部分其他函式中其中一个数字是必要,文字值19会转换的数字19。不过,在公式中ISNUMBER(“19”)、19不会转换文字值,且IsNumber函数会传回False。

    IsNumeric:如果在整个表达式被视为一个数字就为真,否则,它会传回False。如果_表达式_为日期表达式IsNumeric会传回False。

    所以咱们就知道为什么IsNumeric用来判断用户输入是否数字可以,而WorksheetFunction.IsNumber不行啦。

     

    二、在空值输入内容

    在空值输入内容的第一步当然是确定空值的位置啦,运行后跳转到空值的地方进行输入。我这里主要用到昨天的Range.End(xldown)来确定下一行的空值。

    Sub SetBlankValue()
        Dim rowNum As Integer
        rowNum = Range("a1").End(xlDown).Row + 1
        Range("a" & rowNum).Select
    End Sub

     

     

    是不是很简单啦。

     

    三、计算选中单元格 数量

    MsgBox Selection.Count

    框柱单元格后运行就出来了,一句话完事儿~

    如果要有选择多个选区,想知道多个选取的数量,用以下方式

    MsgBox Selection.Areas.Count

     

    四、有效遍历选区

    有效遍历选区一般是对选区内有值的进行遍历操作,不然大量空值存在就很浪费时间,下面是对用户框住的内容进行判断,小于0的就成黄色,大于等于0的就蓝色。

    Sub BianLi()
        Dim cell As Range
        If TypeName(Selection) <> "Range" Then Exit Sub
        Application.ScreenUpdating = False
        For Each cell In Selection
            If cell.Value < 0 Then
                cell.Interior.Color = RGB(255, 255, 0)
            Else
                cell.Interior.Color = RGB(0, 255, 255)
            End If
        Next
    End Sub

    框选后确实变色了,但是呢如果选中整行整列的话,会比较慢,工作表有个叫UsedRange的方法,官方解释【返回一个**Range** 对象, 该对象代表指定工作表上的所用区域。】也就是咱们用了多少单元格意思。输出个已使用单元格数量试试

    MsgBox (Sheets(1).UsedRange.Count)

    然后我们就可以根据用户框住的区域和这个UsedRange区域进行交叉匹配,匹配到了的说明有值,需要进行运算

    Sub BianLi2()
        Dim cell As Range, rng As Range
        If TypeName(Selection) <> "Range" Then Exit Sub
        Application.ScreenUpdating = False
        Set rng = Application.Intersect(Selection, ActiveSheet.UsedRange)
        For Each cell In rng
            If cell.Value < 0 Then
                cell.Interior.Color = RGB(255, 255, 0)
            Else
                cell.Interior.Color = RGB(0, 255, 255)
            End If
        Next
    End Sub

    结果和上图相似,但是速度会稍稍快了点,但是也带来一个问题,如果用户点了空白区域,既没有内容,也没有使用,所以可能会报错哟,所以还需要改进一下。

    此刻需要用表达式。Range.specialcells(Type, Value)来区分一下,该函数返回一个Range对象, 该对象代表与指定类型和值匹配的所有单元格。第一个参数是要包含的单元格,必填;第二个参数是可选的,写上要返回哪些类型的单元格

    所以咱们把有值的Range用这个函数拆成2部分,数字的,就做判断,不是数字的,就不管了

    Sub BianLi3()
        Dim numCells As Range, cell As Range
        If TypeName(Selection) <> "Range" Then Exit Sub
        Application.ScreenUpdating = False
        
        'xlConstants 意思是单元格是值,xlNumbers意思就是数字
        Set numCells = Selection.SpecialCells(xlConstants, xlNumbers)
       
        For Each cell In numCells
            If cell.Value < 0 Then
                cell.Interior.Color = RGB(255, 255, 0)
            Else
                cell.Interior.Color = RGB(0, 255, 255)
            End If
        Next
    End Sub

     

     

     

     

    展开全文
  • 日常录入EXCEL表格的单元格里 ,我们输入一些一般性的日期内容,如:2017-10-17 或 2017/10/17时,EXCEL会自动识别为日期并按单元格设计格式显示,单元格中存储的值也是日期格式的值。 但我们进行不规范的日期...

          在日常录入EXCEL表格的单元格里 ,我们输入一些一般性的日期内容,如:2017-10-17 或 2017/10/17时,EXCEL会自动识别为日期并按单元格设计格式显示,单元格中存储的值也是日期格式的值。 

          但我们进行不规范的日期输入时,如在单元格中输入:2017.10.10或2017。10。10或20171010时,EXCEL不会自动识别这些内容为日期,而只会识别为字符串(文本),且在单元格中存储的也只是文本而已。

          我们通过编写VBA代码可以轻松解决此问题,让EXCEL完美识别输入的任何日期内容,不管是20171010或2017.10.10还是201711或20170101或2017131都可被正确识别,而且是直接将单元格中存储的值转换为日期值,不仅仅是显示格式的转换。

     

          闲话不说,直接让VBA代码:

          (要录入VBA代码,必须通过EXCEL进入VBA编辑器,这部分内容可搜索下)

          

    '以下代码都要放到一个sheet的类模块之中
    Dim nDate
    Private Sub Worksheet_Activate()'加载sheet的事件
        nDate = InputBox("请确定此工作表中第几列为日期型的数据!", "输入数字", "2")
        If nDate = "" Then
            nDate = 2 '--只操作指定的列号的列,目前只操作B列(第2列)
        Else
            nDate = Val(nDate)
        End If
    End Sub
    Private Sub Worksheet_Change(ByVal Target As Range)'--sheet中任何地方发生数据改变时触发的事件
        If nDate = 0 Then Exit Sub
        If Target.Cells.Column = nDate Then '--如果是第二列才检验文本为日期
            Target.Value = TryChangeDate2(Target.Value)
        End If
    End Sub
    Public Function TryChangeDate2(ByVal strDATEcome As String) As Variant
        On Error GoTo TryChangeDate2ERR
        Dim strDATE As String
        strDATE = Trim(strDATEcome)
        Dim myDate As Date
        Dim strK As String
        strK = mTrim(strDATEcome)
        Dim k As Integer, nkkkk As Integer
        k = -1
    k0:
        k = 0
        myDate = DateValue(strDATE)
        myDate = Format(myDate, "yyyy/m/d")
        TryChangeDate2 = myDate
        Exit Function
    k1:
        k = 1
        myDate = DateValue(strDATE)
        myDate = Format(myDate, "yyyy/m/d")
        TryChangeDate2 = myDate
        Exit Function
    TryChangeDate2ERR:
        Err.Clear
        If k = 0 Then
            nkkkk = Len(strK)
            Select Case nkkkk
                Case 4
                    If InStr(1, strK, ".") = 0 And InStr(1, strK, ",") = 0 And InStr(1, strK, "/") = 0 And InStr(1, strK, "\") = 0 And InStr(1, strK, "-") = 0 Then
                        strDATE = Left(strK, 2) & "/" & Mid(strK, 3, 1) & "/" & Mid(strK, 4, 1)
                    End If
                Case 5
                    If InStr(1, strK, ".") = 0 And InStr(1, strK, ",") = 0 And InStr(1, strK, "/") = 0 And InStr(1, strK, "\") = 0 And InStr(1, strK, "-") = 0 Then
                        If Val(Mid(strK, 3, 1)) >= 3 Then
                            strDATE = Left(strK, 2) & "/" & Mid(strK, 3, 1) & "/" & Mid(strK, 4, 2)
                        Else
                            strDATE = Left(strK, 2) & "/" & Mid(strK, 3, 2) & "/" & Mid(strK, 5, 1)
                        End If
                    End If
                Case 6
                    If InStr(1, strK, ".") = 0 And InStr(1, strK, ",") = 0 And InStr(1, strK, "/") = 0 And InStr(1, strK, "\") = 0 And InStr(1, strK, "-") = 0 Then
                        If Left(strK, 1) = "1" Or Left(strK, 1) = "2" Then
                            strDATE = Left(strK, 4) & "/" & Mid(strK, 5, 1) & "/" & Mid(strK, 6, 1)
                        Else
                            strDATE = Left(strK, 2) & "/" & Mid(strK, 3, 2) & "/" & Mid(strK, 5, 2)
                        End If
                        GoTo theEnd
                    End If
                        strDATE = Left(strK, 2) & "/" & Mid(strK, 4, 1) & "/" & Mid(strK, 6, 1)
                Case 7
                    If InStr(1, strK, ".") = 0 And InStr(1, strK, ",") = 0 And InStr(1, strK, "/") = 0 And InStr(1, strK, "\") = 0 And InStr(1, strK, "-") = 0 Then
                        If Val(Mid(strK, 5, 1)) >= 3 Then
                            strDATE = Left(strK, 4) & "/" & Mid(strK, 5, 1) & "/" & Mid(strK, 6, 2)
                        Else
                            strDATE = Left(strK, 4) & "/" & Mid(strK, 5, 2) & "/" & Mid(strK, 7, 1)
                        End If
                    Else
                        If Val(Mid(strK, 4, 1)) >= 3 Then
                            strDATE = Left(strK, 2) & "/" & Mid(strK, 4, 1) & "/" & Mid(strK, 6, 2)
                        Else
                            strDATE = Left(strK, 2) & "/" & Mid(strK, 4, 2) & "/" & Mid(strK, 7, 1)
                        End If
                    End If
                Case 8
                    If InStr(1, strK, ".") = 0 And InStr(1, strK, ",") = 0 And InStr(1, strK, "/") = 0 And InStr(1, strK, "\") = 0 And InStr(1, strK, "-") = 0 Then
                        strDATE = Left(strK, 4) & "/" & Mid(strK, 5, 2) & "/" & Mid(strK, 7, 2)
                    Else
                        strDATE = Left(strK, 4) & "/" & Mid(strK, 6, 1) & "/" & Mid(strK, 8, 1)
                    End If
                Case 9
                    If Val(Mid(strK, 6, 1)) >= 3 Then
                        strDATE = Left(strK, 4) & "/" & Mid(strK, 6, 1) & "/" & Mid(strK, 8, 2)
                    Else
                        strDATE = Left(strK, 4) & "/" & Mid(strK, 6, 2) & "/" & Mid(strK, 9, 1)
                    End If
                Case 10
                    strDATE = Left(strK, 4) & "/" & Mid(strK, 6, 2) & "/" & Mid(strK, 9, 2)
            End Select
    theEnd:
            GoTo k1
        End If
        TryChangeDate2 = strDATEcome
    End Function

    Public Function mTrim(ByVal strCome As String) As String '--此函数的作用是去掉字符串中间的空格 On Error GoTo mTrimErr Dim i As Integer, j As Integer Dim strLS As String, k As String * 1, strResult As String strLS = Trim(strCome) strResult = "" j = Len(strLS) For i = 1 To j k = Mid(strLS, i, 1) If k <> " " And k <> " " And VarType(k) <> vbNull And k <> vbNullString Then strResult = strResult & k End If Next mTrim = strResult Exit Function mTrimErr: Err.Clear mTrim = strCome End Function

    '---以上代码可实现在EXCEL指定列(上面指定为B列)中录入日期内容时,任意可识别的日期都会被自动转换成标准日期值,并以日期值存储在单元格中
    '---欢迎大家批评指正,如果发现错误,欢迎指正,如有不明子的地方,欢迎交流
    '--QQ: 578652607

     

    转载于:https://www.cnblogs.com/lhghroom/p/7648481.html

    展开全文
  • 今天还是讲讲单元格操作 一、删除空行 如果是上面的表格要删除空行的话,我们想到的是先删掉第1行,再第2行,再第3行……但是对于程序来说,删完第1行后,第2行就变成了第1行后面就会出错,所以我们先从后面...

    今天还是讲讲单元格操作

     

    一、删除空行

    如果是上面的表格要删除空行的话,我们想到的是先删掉第1行,再第2行,再第3行……但是对于程序来说,删完第1行后,第2行就变成了第1行后面就会出错,所以我们先从后面24行开始删除,然后是20行、15行,这样删除后原来的行数仍然不会受到影响。

    Sub DeleteEmptyRow()
        
        Dim totalRow As Long
        Dim beginRow As Long
        Dim endRow As Long
        Dim i As Long
        
        endRow = ActiveSheet.UsedRange.Rows.Count
        beginRow = ActiveSheet.UsedRange.Rows(1).Row
        totalRow = beginRow + endRow - 1
        
        
        '从最后一行往前删除
        For i = totalRow To 1 Step -1
            If Application.WorksheetFunction.CountA(Rows(i)) = 0 Then
                Rows(i).Delete
            End If
        Next
        
        MsgBox "删除成功!"
    End Sub

     

    二、确定单元格区域是否包含在另一个单元格区域

    思路是将单元格区域1和区域2进行合并,如果合并后区域是和区域2一样,说明区域1就被包含在区域2内。判断是否一样需要用到Range的Address属性,这里用Function好操作一点。

    Function InRange(rng1 As Range, rng2 As Range) As Boolean
        '判断Rng1是否在Rng2里面
        If Union(rng1, rng2).Address = rng2.Address Then
            InRange = True
        End If
    End Function

     

    三、判断单元格区域数据类型

    用函数过程编写,对框住的左上角第一个单元格格式进行判断

    Function CellType(rng) As String
        Dim msg As String
        Dim cell As Range
        Set cell = rng.Range("a1")
        If IsEmpty(cell) Then CellType = "空值"
        If IsDate(cell) Then CellType = "日期"
        If IsNumeric(cell) Then CellType = "数值"
        If Application.IsText(cell) Then CellType = "文本"
    End Function

     

    四、在单元格大量写入值的方法

    首先我们用日常的for循环试试

    Sub FillRange()
        
        Dim inputRow As Long, inputCol As Long
        Dim startTime As Double, endTime As Double, timeCost As Double
        Dim i As Integer, j As Integer
        '创建数组,建设是我们要填充的值
        Dim myArray()
        
        
        inputRow = InputBox("请输入要填充的行数")
        inputCol = InputBox("请输入要填充的列数")
        
        If (inputRow = 0) Or (inputCol = 0) Then
            MsgBox "啥也没有!"
            Exit Sub
        End If
        
        '假设我们要填充的值全是1
        ReDim myArray(1 To inputRow, 1 To inputCol)
        For i = 1 To inputRow
            For j = 1 To inputCol
                myArray(i, j) = 1
            Next j
        Next i
        
        '开始填充数据
        startTime = Timer
        For i = 1 To inputRow
            For j = 1 To inputCol
                '直接填充到工作表中
                ActiveSheet.Cells(1, 1).Offset(i - 1, j - 1) = myArray(i, j)
            Next j
        Next i
        endTime = Timer
        
        timeCost = endTime - startTime
        MsgBox Format(timeCost, "00:00:00")
        
    End Sub

    用for循环填充100*100的数据,这才10000个数据,我这电脑都用了4秒。运行得着实有点慢呀,还得优化优化。

    Sub FillRange2()
        
        Dim inputRow As Long, inputCol As Long
        Dim startTime As Double, endTime As Double, timeCost As Double
        Dim i As Integer, j As Integer
        '创建数组,建设是我们要填充的值
        Dim myArray()
        '再创建一个临时数组,用来接收要填充的值
        Dim tempArray
        '创建一个Range区域,接收临时数组的数据
        Dim rng As Range
        
        inputRow = InputBox("请输入要填充的行数")
        inputCol = InputBox("请输入要填充的列数")
        
        If (inputRow = 0) Or (inputCol = 0) Then
            MsgBox "啥也没有!"
            Exit Sub
        End If
        
        '假设数组内的值全是1
        ReDim myArray(1 To inputRow, 1 To inputCol)
        ReDim tempArray(1 To inputRow, 1 To inputCol)
        
        For i = 1 To inputRow
            For j = 1 To inputCol
                myArray(i, j) = 1
            Next j
        Next i
        
        '开始计时
        startTime = Timer
        
        Set rng = ActiveSheet.Range(Cells(1, 1), Cells(inputRow, inputCol))
        
        For i = 1 To inputRow
            For j = 1 To inputCol            
                tempArray(i, j) = myArray(i, j)        
            Next j
        Next i
        
         '直接将数组的值赋值给选定的区域
        rng.Value = tempArray
        endTime = Timer
        
        timeCost = endTime - startTime
        MsgBox Format(timeCost, "00:00:00")
        
    End Sub

     

    FillRange2填充100*100,几乎是秒完成,1秒钟都没花!1000*1000才花了1秒多。上面

    看起来代码很长,实际就2个关键步骤:

    ①大量数据别直接填充,先将值循环复制给临时数组

    ②将数组的值直接复制给选定的Range区域就可以了

     

    五、将单元格值传递给数组的方法

    Sub getRangeValue()
        Dim x As Variant
        x = Range("A1:ALL1000").Value
    End Sub

    通过设置一个Variant变量类型的x,我们发现把刚才1000*1000的值赋值给x瞬间就可以完成。现在去单元格的值和对单元格进行写入值都很快,那么咱们来结合一下,做个小demo,先用随机数填充个1000*1000的单元格,再将随机到的值乘于2写入回去,看看要多长时间。

    Sub demodemo()
        Dim x As Variant
        Dim rng As Range
        Dim myArray(1 To 1000, 1 To 1000)
        Dim startTime As Double, endTime As Double
        Dim i As Integer, j As Integer
        startTime = Timer
        
        For i = 1 To 1000
            For j = 1 To 1000
                myArray(i, j) = Rnd
            Next j
        Next i
        Set rng = Range(Cells(1, 1), Cells(1000, 1000))
        rng.Value = myArray
        endTime = Timer
        MsgBox Format(endTime - startTime, "00:00:00")
    End Sub

     

     

    经过试验发现,随机生成1000*1000的单元格数据,1秒钟搞定!

    为了看看是不是真计算了,咱们再将值乘于2写回去,看看要多久,顺便看看截图到的数据计算得对不对。

    Sub demodemo2()
        Dim x As Variant
        Dim rng As Range
        Dim myArray(1 To 1000, 1 To 1000)
        Dim startTime As Double, endTime As Double
        Dim i As Integer, j As Integer
        startTime = Timer
        
        Set rng = Range(Cells(1, 1), Cells(1000, 1000))
        For i = 1 To 1000
            For j = 1 To 1000
                myArray(i, j) = rng.Cells(i, j) * 2
            Next j
        Next i
        
        rng.Value = myArray
        endTime = Timer
        MsgBox Format(endTime - startTime, "00:00:00")
    End Sub

     

    5秒搞定!也就是说,咱们从取值到计算再到写回去,1000*1000十万个值大概在6秒钟左右就可以搞定,如果机器更好的话运算会更快哟~

    展开全文
  • 下面是一个输入日期的窗体,输入起止日期并进行检查,输入用8位数字,这样输入比较快,输入后用DateSerial转换成日期格式(DateSerial是个很有意思的函数,其功能是将参数年月日转换成一个有效的日期。虽然要求输入...
  • Excel VBA自动给单元格填色

    千次阅读 2018-08-09 10:49:39
    要求:一个Excel文件,有多个sheet,每个sheet中都有特定范围的单元格需要填充颜色,手动填充太麻烦,下面是VBA实现的自动填色 1 Sub incolor() 2 3 Dim i, j, sheetnum, rownum 4 5 '获取当前文档的...
  • Excel VBA单元格区域做参数

    千次阅读 2013-08-16 20:32:45
    简单点,只写代码,自己看懂就可以了 Function TstRangEAsPara(MyRange As Range, RowNum As Integer, ColNum As Integer) as variant Dim MyArr() MyArr = MyRange ... TstRangeAsPara = MyArr(ColNum,ColNum...
  • vba程序和函数各有一个示例,使用非常方便。适用于单元格很多的字符杂乱的情况。
  • Excel,经常需要输入日期。为保证输入正确,可以通过一个日历控件进行输入。 工作表添加DTPicker控件,并隐藏。工作表添加工作表SelectionChange事件,事件判断Target参数所指的单元格,当为特定...
  • NULL 博文链接:https://wjason.iteye.com/blog/1317323
  • 目 录 1、错误类 2、设置全局变量 3、开关 4、弹窗 5、换行 6、 7、 ...On Error Resume Next '忽略运行过程可能出现的错误 ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━...
  • Excel判断单元格是否包含日期

    千次阅读 2014-03-28 16:06:53
    Excel的系列“Is”类函数可以判断指定值并返回TRUE或FALSE,如ISNUMBER函数判断值是否为数字、ISTEXT判断值是否为文本等。但Excel没有提供一个判断日期的...如果要检测某单元格是否为日期,可以用CELL函数,例如
  • excel单元格内插入当前日期,时间

    千次阅读 2012-10-11 01:50:55
    使用以下快捷键可以快速插入当前日期或时间: Ctrl+;(分号)在单元格内插入当前日期 Ctrl+Shift+;(分号)插入当前时间, 按Ctrl+;(分号)以后输入一个空格,再按Ctrl+Shift+;...2.在单元格中输入 =NOW() 回
  • 其实这些烦恼最开始录入数据前,设置对了单元格格式,就可以避免:对于应该是数字的列,除了“文本”、“日期”和“时间”之外,都可以根据实际需要进行设置;对于像身份证号、手机号和账号等一定要录入数据前...
  • VBA中取当前日期的函数是Date,当前时间的函数是Time,当前日期和时间一起取是Now。日期转换成年月日的函数分别是:Year、Month、Day,参数可以用Date或Now取出的值。时间转换成时分秒的函数分别是:Hour、Minute.....
  • [a1]>"z" 错误值判断:vba|application.isError([a1]) 日期判断:vba.isDate([a1]) 指定数字格式:range().numberFormatLocal = "0.00" 3、单元格合并 合并:就是merge 返回合并后信息:mergeArea.address Range("a2...
  • 现在希望能够限定使用者逐行输入,即只能输入当前行的内容,不能修改己输入的内容或跳行输入。该功能是否能够利用VBA实现? 日期/时间 产品号 数量 2012/1/1 A 2 2012/1/2 A 3 2012/1/3 ...
  • VBA中日期和时间相关的计算

    千次阅读 2019-09-18 05:53:22
    VBA中取当前日期的函数是Date,当前时间的函数是Time,当前日期和时间一起取是Now。日期转换成年月日的函数分别是:Year、Month、Day,参数可以用Date或Now取出的值。时间转换成时分秒的函数分别是:Hour、Minute、...
  • 1、日期转换 很简单,直接用转换函数就可以了,例如:CDate("2012-12-31") 2、日期之间的天数 用datediff函数,注意,工作表单元格中用的函数名称是datedif,少了一个f,而且参数顺序也不一样。例如: dt = Cells(2,...
  • VBA合并单元格的值(tmpstr = tmpstr & " " & Cells(i, j))如果碰到#N/A就会报错,提示类型不匹配,如下图所示: 实际上,不仅仅是#N/A,其它的错误标识(如#VALUE!、#DIV/O!等等)也会报同样的错误。...
  • EXCEL VBA文本框内容显示为日期格式

    千次阅读 2010-07-15 23:13:00
    EXCEL单元格里的是日期格式,但是要显示到文本框里时就变成数字了。 我要文本框内容也显示为日期格式应该怎么办?    Range("A1").Text 就是日期格式的。
  • VBA常用技巧

    2014-12-21 16:39:28
    技巧116 使用DTP控件输入日期 12 技巧117 使用RefEdit控件选择区域 12 技巧118 如何注册控件 12 技巧119 遍历控件的方法 12 119-1 使用名称的变量遍历控件 12 119-2 使用对象类型遍历控件 12 119-3 使用程序标识符...
  • 你是想在输入数据,后面自动显示时间 右键SHEET 查看代码,复制下列代码 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 Then Target.Offset(0, 1) = Date End If End ...
  • 日常工作,经常会遇到需要实时记录数据录入的时间问题。 有朋友会说了,用快捷键啊,按Ctrl+;(分号)可以返回当前的系统日期,按Ctrl+Shift+;...以下图为例,A列单元格输入或是修改内容后,B列就会自动的
  • 计算选中的Excel单元格中两个日期之间相差几点几个月 日期格式如下(起始日期-结束日期): YYYY/MM/DD-YYYY/MM/DD Sub CalcMonth() 'I Love you, Baby! Dim BegDate, EndDate, Msg Dim y, m, d, num Dim i, j,...
  • 需求: 1、通过excel看盘; 2、输入不同的股票代码都可以自动爬取实时行情数据。 实现方案; ...1、通过VBA从网上实时爬取行情数据;...2、通过VBA实现定时5s刷新一次...自动刷新程序调用 (6)冻结单元格程序 ...
  • 文件打开、保存、备份、关闭等;工作表选取、删除、移动等;单元格定位、格式、合并等
  • '2、用VBA在单元格输入带引号的公式 Sub t3() Range("c16") = "=SUMIF(A2:A6,""b"",B2:B6)" '遇到单引号就把单引号加倍 End Sub '3、用VBA在单元格输入数组公式 Sub t4() Range("c9").FormulaArray...
  • 锁定一个单元格不被任意修改和删除1、按 Ctrl + A 全选,选中整个表格,右键,弹出的菜单选择“设置单元格格式”,打开的窗口选择“保护”选项卡,单击“锁定”把其前的钩去掉,单击“确定”;2、选中要锁定...
  • 由于B列部门列经常需要重复录入,而且部门列表一般为固定的序列(如图2-58E列所示),如何用VBA对B列创建下拉列表以便输入内容? 员工编号 部门 姓名 部门列表 0006 财务部 程建华 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,287
精华内容 514
关键字:

vba在单元格中输入日期