Excel 增加文字与上下边框的距离(VBA 语法学习)

解决问题

打印excel时,表格里面的内容显示不全(实际上可以完全显示)

问题导致原因

因为列数过多,打印时合并到一列,单元格进行了缩放,文字也进行了缩放。两者缩放比例为啥不一样我也不清楚

尝试解决

自动调整行高、页面边距设置、调整列数为1页等方式尝试后,也会存在个别单元格内容显示不全的问题。
最终使用了VBA的方式:原理就是把每行单元格高度加10,不行的话就再执行一次再加10。
以下两种供参考:

打开excel VB 编辑器;

方法1: 快捷键打开: ALT+F11;
方法2: 把鼠标移到工作表名称处 (图中2处),鼠标右键,点击‘查看代码’;

实现1
Sub test()
For i = 1 To Range("A2").End(xlDown).Row
Rows(i & ":" & i).RowHeight = Rows(i & ":" & i).RowHeight + 10
Next i
End Sub

这段代码是使用 Visual Basic for Applications (VBA) 编写的 Excel 宏。逐行解释它:
For i = 1 To Range("A2").End(xlDown).Row: 这行代码启动一个循环,从 1 开始,一直到 A 列中从单元格 A2 开始向下连续的非空单元格的行数。Range("A2").End(xlDown)用于定位从 A2 单元格开始往下的连续区域的结束位置,.Row返回结束位置的行号。因此,这个循环会遍历从 A2 单元格开始一直到 A 列最后一个非空单元格的所有行。

Rows(i & ":" & i).RowHeight = Rows(i & ":" & i).RowHeight + 10: 这行代码用于调整每一行的行高。Rows(i & ":" & i)是一个行对象,它代表了第 i 行。.RowHeight属性用于获取或设置该行的行高。这行代码将当前行的行高增加 10 个单位。

Next i: 这行代码结束了 For 循环,i 递增,继续处理下一行。
整个过程会对指定范围内的每一行执行相同的行高增加操作。
总体来说,这段代码的作用是将 Excel 表格中特定范围(从 A2 单元格开始到 A 列最后一个非空单元格)中的每一行的行高增加 10 个单位。

实现2

当然,我们可以使用另一种方式来实现相同的功能,例如使用 For Each 循环来迭代指定范围内的每一行,然后增加行高。
以下是方式二的代码:

Sub NewIncreaseRowHeight()
    Dim cell As Range
    Dim lastRow As Long
    
    ' 获取指定范围中最后一个非空单元格所在行
    lastRow = Range("A2").End(xlDown).Row
    
    ' 遍历指定范围内的每一行并增加行高
    For Each cell In Range("A2:A" & lastRow)
        cell.EntireRow.RowHeight = cell.EntireRow.RowHeight + 10
    Next cell
End Sub

这段代码是使用 VBA(Visual Basic for Applications)语言编写的 Excel 宏,具体解释如下

1. `Sub IncreaseRowHeight()`: 这行代码定义了一个名为 "NewIncreaseRowHeight" 的子过程(Subroutine),这是一个可以在 Excel 中运行的宏。这个子过程将被用来增加行高。

2. `Dim cell As Range`: 这行代码声明了一个名为 "cell" 的变量,类型为 Range,用于在后续代码中代表单元格。

3. `Dim lastRow As Long`: 这行代码声明了一个名为 "lastRow" 的变量,类型为 Long,用于存储最后一个非空单元格所在的行号。

4. `lastRow = Range("A2").End(xlDown).Row`: 这行代码计算并存储了最后一个非空单元格所在的行号。它从 A2 单元格开始,然后沿着列 A 向下搜索,直到遇到最后一个非空单元格,并返回该单元格所在的行号。这个行号被存储在名为 "lastRow" 的变量中。

5. `For Each cell In Range("A2:A" & lastRow)`: 这行代码启动一个 `For Each` 循环,它将遍历从 A2 单元格开始一直到最后一个非空单元格的所有单元格。在每次循环中,变量 "cell" 将代表当前遍历到的单元格。

6. `cell.EntireRow.RowHeight = cell.EntireRow.RowHeight + 10`: 在每次循环中,这行代码将当前单元格所在行的行高增加 10 个单位。通过 `EntireRow` 属性,我们可以访问到包含当前单元格的整行,然后通过 `RowHeight` 属性来获取和设置行高。

7. `Next cell`: 这行代码结束了 `For Each` 循环。在每次循环结束后,会自动移动到下一个单元格进行下一轮迭代。

8. `End Sub`: 这行代码标志着子过程的结束。

整个过程的目的是遍历指定范围内的每一行,并将每行的行高增加 10 个单位。

学习

VBA(Visual Basic for Applications)是一种编程语言,广泛应用于 Microsoft Office 应用程序中,比如 Excel、Word 和 PowerPoint 等。下面是一些关于 VBA 语法和常用函数的讲解:

VBA 语法要点:

  1. 变量声明:
    在 VBA 中,使用 Dim 关键字声明变量,可以指定变量类型,如 IntegerStringLongDouble 等。

    Dim myVar As Integer
    Dim myString As String
    
  2. 子过程和函数:
    在 VBA 中,可以编写子过程(Subroutine)和函数(Function)。子过程用于执行一系列操作而无需返回值,而函数则可以执行一系列操作并返回一个值。

    Sub MySubroutine()
        ' 一些代码操作
    End Sub
    
    Function MyFunction() As Integer
        ' 一些代码操作
        MyFunction = 10
    End Function
    
  3. 条件语句:
    VBA 中的条件语句包括 If...Then...Else 以及 Select Case

    If condition Then
        ' 执行操作
    ElseIf anotherCondition Then
        ' 执行另一种操作
    Else
        ' 执行默认操作
    End If
    
    Select Case variable
        Case value1
            ' 执行操作1
        Case value2
            ' 执行操作2
        Case Else
            ' 执行默认操作
    End Select
    
  4. 循环结构:
    VBA 中的常见循环结构有 For...NextDo...LoopWhile...Wend 等。

    For i = 1 To 10
        ' 执行操作
    Next i
    
    Do While condition
        ' 执行操作
    Loop
    
  5. 对象和属性:
    在 VBA 中,可以操作对象的属性和方法。常见的对象包括工作簿、工作表、单元格等。

    Worksheets("Sheet1").Range("A1").Value = 10
    

常用函数:

  1. MsgBox 函数:
    用于显示一个消息框,提示用户信息。

    MsgBox "Hello, world!"
    
  2. InputBox 函数:
    用于显示一个输入框,接收用户输入。

    userInput = InputBox("Please enter your name:")
    
  3. Range 函数:
    用于表示 Excel 中的一个单元格或单元格范围。

    Worksheets("Sheet1").Range("A1").Value = 10
    
  4. End 函数:
    用于确定数据的结束位置。

    lastRow = Range("A1").End(xlDown).Row
    
  5. Len 函数:
    返回一个字符串的长度。

    length = Len("Hello")
    

这些是 VBA 中的一些常见语法和函数。掌握了这些基础知识,您就可以开始编写简单到复杂的 VBA 程序来自动化 Excel 中的各种任务。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容