Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 在列中循环以将字体大小为10的单元格下移一行_Vba_Excel - Fatal编程技术网

Vba 在列中循环以将字体大小为10的单元格下移一行

Vba 在列中循环以将字体大小为10的单元格下移一行,vba,excel,Vba,Excel,我将节标题单元格设置为10磅字体,而将A列中的所有其他数据设置为9磅字体。我正在尝试编写一个vba宏以循环通过A列,将每个标题单元格向下移动一行(因为csv在其下方留下一个空白单元格),然后移到列中的下一个标题单元格。这是我的尝试,但我不确定我做错了什么 Sub FontSpacing() Dim Fnt As Range For Each Fnt In Range("A8:A5000") If Fnt.Font.Size = "10" Then Acti

我将节标题单元格设置为10磅字体,而将A列中的所有其他数据设置为9磅字体。我正在尝试编写一个vba宏以循环通过A列,将每个标题单元格向下移动一行(因为csv在其下方留下一个空白单元格),然后移到列中的下一个标题单元格。这是我的尝试,但我不确定我做错了什么

Sub FontSpacing()
    Dim Fnt As Range

  For Each Fnt In Range("A8:A5000")
      If Fnt.Font.Size = "10" Then
       ActiveCell.Cut Destination:=ActiveCell.Offset(",1")
  End If
Next
试试这个

Sub FontSpacing()
    Dim r As Range

    For Each r In ThisWorkbook.Worksheets("Sheet1").Range("A8:A5000")
        If r.Font.Size = 10 Then
            r.Offset(1,0).Value = r.Value
            r.Value = vbNullString
        End If
    Next r
End Sub

这些问题:

  • Offset(“,1”)
    不应该有语音标记。也就是说,它应该是偏移量(0,1)。事实上,如果要粘贴到下面的行,那么它应该是
    Offset(1,0)
  • 避免使用
    ActiveCell
    。不是单元格在您的范围内循环,而是您运行sub时工作表上的活动单元格
  • Fnt
    对于一个范围来说是个坏名字,这可能是你感到困惑的原因。在声明(标注)范围时,请尝试为其指定一个名称,以明确您正在使用的范围
额外:

  • 完全限定范围引用,以避免隐式引用
    ActiveSheet
    ,例如
    此工作簿。工作表(“Sheet1”)。范围(“A1”)
  • 通过直接设置
    避免剪切粘贴
  • 您的缩进被去掉了,这使它看起来像一个完整的子对象,但是它缺少
    结束子对象

不确定您指的是下面一行还是右边一列,所以:
要移动1列,请执行以下操作:

Sub FontSpacing()
Dim rng As Range, cell As Range
Set rng = Range("A1:A5000")
For Each cell In rng
    If cell.Font.Size = "10" Then
        cell.Offset(0, 1).Value = cell.Value
        cell.Clear
    End If
Next
End Sub
要移动一行,请执行以下操作:

Sub FontSpacing()
Dim rng As Range, cell As Range
Set rng = Range("A1:A5000")
For Each cell In rng
    If cell.Font.Size = "10" Then
        a = cell.Row + 1
        Rows(a & ":" & a).Insert Shift:=xlDown, CopyOrigin:=1
        cell.Offset(1, 0).Value = cell.Value
        cell.Offset(1, 0).Font.Size = "11"
        cell.Clear
    End If
Next
End Sub

这将导致运行时错误“13”-类型不匹配,因为它在“r.Cut Destination:=r.Offset(1,)”上遇到语法错误line@ParkerMcA我已经对代码做了一点修改,只是测试了一下——现在应该一切正常了——就是这样!我知道这是将10磅字体的单元格向下移动一行。第二个子单元看起来很接近,但它继续运行,同一个单元格会不断地将其沿行向下撞击,而不是在移动后跳过它,然后沿列移动到下一个标题单元格重试。应该有用。为了便于记录,移动的字体将从10改为11