zoukankan      html  css  js  c++  java
  • VBA-操作单元格对象

    选择单元格的几种方式:

      [a1].select

      cell(2,3).select  #参数 行 列

      range("a1").select

      range("a1") =1  默认是 range("a1").value = 1 为属性赋值

        两者还是有 区别的 比如安装单元格a1的值去点击对应的工作表  sheets(range("a1").value).select  这时候只能用range().value

    range的两个朋友:offset以及 end  帮助走位的 移动

      range("a1").offset(1,2) #两个参数 下移 右移      #偏移单元格  风骚的走位

    例子:

      

    Sub ss()
    Dim rng As Range  #这里需要注意  如果这边没有声明rng为单元格的话 需要使用rng.value 来进行赋值
    For Each rng In Range("a1:a20")
        If rng = "" Then
            rng.Offset(0, 1) = "先生"
        Else
            rng.Offset(0, 1) = "女士"
        End If
    Next
    End Sub

       使用end进行更改 range("a65536").end(xlup).row  表示最后一行

    Sub ss()
    Dim rng As Range
    For Each rng In Range("a1:a" & Range("a65536").End(xlUp).Row)
        If rng = "" Then
            rng.Offset(0, 1) = "先生"
        Else
            rng.Offset(0, 1) = "女士"
        End If
    Next
    End Sub

    range更改选区 两个参数

      Range("a1").Resize(1,4).select #参数  行 列

      Range("a1").EntireRow.select

    range的复制

      Range("h1:i7").Copy Range("n7")

    range 单元格的合并  merge 

    Sub ss()
    Dim rng As Range
    For Each rng In Range("h21:o21")
        rng.Resize(2, 1).Merge
    Next
    End Sub

    range单元格清除 

      range("a1:a100").clearcontents

    宏的引用

    Sub ss()
    Dim sht As Worksheet
    Call qk    #使用call + 宏名称 来引用另一个宏的功能
    
    For i = 2 To Sheets.Count
        Range("a1") = i
    
    Next
    End Sub
    ..........................................................
    
    Sub qk()
    For i = 2 To Sheets.Count
        Sheets(i).Range("a1").ClearContents
        
    Next
    End Sub

     新建表

    Sheets.Add after:=Sheets(Sheets.Count)
    Sheets(Sheets.Count).Name = "123"
    上面的代码可以简写为如下
    Sheets.Add(after:=Sheets(Sheets.Count)).Name = "123"

    但是上面的容易出问题 如果已经有名字为“123”的表 那么程序就会崩溃

    sub  拆分表
    dim i,k as integer
    For i = 2 To irow
        k = 0
        For Each sht In Sheets
            If sht.Name = Sheet1.Cells(i, l) Then
                k = 1
            End If
        Next
        
        If k = 0 Then
            Sheets.Add(after:=Sheets(Sheets.Count)).Name = Sheet1.Cells(i, l)
        End If
    end sub

    交互语言

    Sub sssss()
    Dim i As Integer
    i = InputBox("你几岁了")
    MsgBox "" & i & ""
    End Sub

    可以结合前面学习的知识制作一个小工具 根据输入的数值  对对应的表列进行拆分成 多表

    Sub 拆分数据()
    
    Dim sht As Worksheet
    Dim i, k, j, m As Integer
    Dim irow As Integer '一共多少行
    Dim l As Integer
    '删除多余的表
    irow = Sheet1.Range("a65536").End(xlUp).Row
    l = InputBox("按照那列分")
    
    Application.DisplayAlerts = False
    If Sheets.Count > 1 Then
        For m = 2 To Sheets.Count
            Sheets(2).Delete
        Next
    End If
    Application.DisplayAlerts = False
    
    '拆分表
    For i = 2 To irow
        k = 0
        For Each sht In Sheets
            If sht.Name = Sheet1.Cells(i, l) Then
                k = 1
            End If
        Next
        
        If k = 0 Then
            Sheets.Add(after:=Sheets(Sheets.Count)).Name = Sheet1.Cells(i, l)
        End If
    Next
    '拷贝数据
    For j = 2 To Sheets.Count
        Sheet1.Range("a1:F" & irow).AutoFilter Field:=l, Criteria1:=Sheets(j).Name
        Sheet1.Range("a1:F" & irow).Copy Sheets(j).Range("a1")
    Next
    Sheet1.Range("a1:F" & irow).AutoFilter
    
    Sheet1.Select
    
    End Sub
  • 相关阅读:
    PHP输出语法:echo、var_dump、print、print_r区别对比
    深浅拷贝
    deepin
    linux 扩容磁盘空间
    tcpdump抓包与tcp握手
    linux 搭建FTP
    ubuntu基本配置
    linux 安装kmv创建虚拟机后网络配置
    selenium + pyautogui 实现淘宝自动登录
    pycharm 加载不出来已安装的selenium包或者其他已安装的package
  • 原文地址:https://www.cnblogs.com/xiao-xuan-feng/p/12624631.html
Copyright © 2011-2022 走看看