0,则 sh.Range(“b”和i).复制目的地:=工作表(“订单列表”).Range(“A”和j) sh.Range(“e”&i&“:g”&i)。复制目的地:=工作表(“订单列表”)。Range(“B”&j) 图纸(“订单列表”)。范围(“E”和j)=图纸(“订单列表”)。范围(“C”和j)*图纸(“订单列表”)。范围(“D”和j) 图纸(“订单列表”)。范围(“F”&j)=上海名称 图纸(“订单列表”)。范围(“B”和“j+1”)=“” 表格(“订单列表”)。范围(“B”和j+2)=“VAT”。加粗。居中 图纸(“订单列表”)。范围(“E”和“j+1”)=“” 工作表(“订单列表”).Range(“E”和j+2)=Application.WorksheetFunction.Sum(列(“E:E”)) 图纸(“订单列表”)。范围(“B”和j+3)=“总计”。粗体。中间图纸(“订单列表”)。范围(“E”和j+3)=应用程序。工作表功能。总和(列(“E:E”)) j=j+1 如果结束 接下来我 如果结束 下一个sh 表(“订单列表”)。列(“A”)。自动调整 表格(“订单列表”)。栏(“B”)。栏宽=90 表(“订单列表”)。列(“C:D”)。自动调整 表格(“订单列表”)。列(“E:F”)。自动调整。下划线。中心 对于ActiveWorkbook.Sheets中的每个sh 如果sh.名称为“订单列表”,sh.名称为“索引”,sh.名称为“选择器”,则 lastRow=sh.Cells(sh.Rows.Count,“A”).End(xlUp).Row 对于i=28至最后一行 如果sh.Range(“G”&i)>0,则 sh.Range(“G”和i)。选择 选择.ClearContents 如果结束 接下来我 如果结束 下一个sh 端接头,vba,excel,Vba,Excel" /> 0,则 sh.Range(“b”和i).复制目的地:=工作表(“订单列表”).Range(“A”和j) sh.Range(“e”&i&“:g”&i)。复制目的地:=工作表(“订单列表”)。Range(“B”&j) 图纸(“订单列表”)。范围(“E”和j)=图纸(“订单列表”)。范围(“C”和j)*图纸(“订单列表”)。范围(“D”和j) 图纸(“订单列表”)。范围(“F”&j)=上海名称 图纸(“订单列表”)。范围(“B”和“j+1”)=“” 表格(“订单列表”)。范围(“B”和j+2)=“VAT”。加粗。居中 图纸(“订单列表”)。范围(“E”和“j+1”)=“” 工作表(“订单列表”).Range(“E”和j+2)=Application.WorksheetFunction.Sum(列(“E:E”)) 图纸(“订单列表”)。范围(“B”和j+3)=“总计”。粗体。中间图纸(“订单列表”)。范围(“E”和j+3)=应用程序。工作表功能。总和(列(“E:E”)) j=j+1 如果结束 接下来我 如果结束 下一个sh 表(“订单列表”)。列(“A”)。自动调整 表格(“订单列表”)。栏(“B”)。栏宽=90 表(“订单列表”)。列(“C:D”)。自动调整 表格(“订单列表”)。列(“E:F”)。自动调整。下划线。中心 对于ActiveWorkbook.Sheets中的每个sh 如果sh.名称为“订单列表”,sh.名称为“索引”,sh.名称为“选择器”,则 lastRow=sh.Cells(sh.Rows.Count,“A”).End(xlUp).Row 对于i=28至最后一行 如果sh.Range(“G”&i)>0,则 sh.Range(“G”和i)。选择 选择.ClearContents 如果结束 接下来我 如果结束 下一个sh 端接头,vba,excel,Vba,Excel" />

Vba 尝试加粗、居中和下划线列,并在生成顺序后清除列 我试图< 1 > 中心,并在列表表中从列22到空白行下划线列E和F。strong>2)加粗,并将电子表格中的增值税和总额居中3)生成订单列表后,清除其他表单中的G28列。但是,它没有下划线、集中或粗体。你能帮我看看吗?下面是我的代码。非常感谢 Option Explicit Sub copy_info() Dim i As Long, j As Long, lastRow As Long Dim sh As Worksheet With Sheets("Order List") .Cells.Clear .Range("A21") = "PART CODE" .Range("B21") = "DESCRIPTION" .Range("C21") = "PRICE" .Range("D21") = "QUANTITY" .Range("E21") = "NET AMOUNT" .Range("F21") = "SHEET NAME" .Range("A21:F21").Font.Bold = True End With j = 22 For Each sh In ActiveWorkbook.Sheets If sh.Name <> "Order List" And sh.Name <> "INDEX" And sh.Name <> "SELECTOR" Then lastRow = sh.Cells(sh.Rows.Count, "A").End(xlUp).Row For i = 28 To lastRow If sh.Range("G" & i) > 0 Then sh.Range("b" & i).Copy Destination:=Worksheets("Order List").Range("A" & j) sh.Range("e" & i & ":g" & i).Copy Destination:=Worksheets("Order List").Range("B" & j) Sheets("Order List").Range("E" & j) = Sheets("Order List").Range("C" & j) * Sheets("Order List").Range("D" & j) Sheets("Order List").Range("F" & j) = sh.Name Sheets("Order List").Range("B" & j + 1) = "" Sheets("Order List").Range("B" & j + 2) = "VAT".bold.center Sheets("Order List").Range("E" & j + 1) = "" Sheets("Order List").Range("E" & j + 2) = Application.WorksheetFunction.Sum(Columns("E:E")) Sheets("Order List").Range("B" & j + 3) = "TOTAL".bold.center Sheets("Order List").Range("E" & j + 3) = Application.WorksheetFunction.Sum(Columns("E:E")) j = j + 1 End If Next i End If Next sh Sheets("Order List").Columns("A").AutoFit Sheets("Order List").Columns("B").ColumnWidth = 90 Sheets("Order List").Columns("C:D").AutoFit Sheets("Order List").Columns("E:F").AutoFit.Underline.Center For Each sh In ActiveWorkbook.Sheets If sh.Name <> "Order List" And sh.Name <> "INDEX" And sh.Name <> "SELECTOR" Then lastRow = sh.Cells(sh.Rows.Count, "A").End(xlUp).Row For i = 28 To lastRow If sh.Range("G" & i) > 0 Then sh.Range("G" & i).Select Selection.ClearContents End If Next i End If Next sh End Sub 选项显式 子副本_信息() 我长,j长,最后一排长 将sh设置为工作表 带图纸(“订单清单”) .细胞,清除 .范围(“A21”)=“零件代码” .范围(“B21”)=“说明” .范围(“C21”)=“价格” .范围(“D21”)=“数量” .范围(“E21”)=“净额” .范围(“F21”)=“图纸名称” .Range(“A21:F21”).Font.Bold=True 以 j=22 对于ActiveWorkbook.Sheets中的每个sh 如果sh.名称为“订单列表”,sh.名称为“索引”,sh.名称为“选择器”,则 lastRow=sh.Cells(sh.Rows.Count,“A”).End(xlUp).Row 对于i=28至最后一行 如果sh.Range(“G”&i)>0,则 sh.Range(“b”和i).复制目的地:=工作表(“订单列表”).Range(“A”和j) sh.Range(“e”&i&“:g”&i)。复制目的地:=工作表(“订单列表”)。Range(“B”&j) 图纸(“订单列表”)。范围(“E”和j)=图纸(“订单列表”)。范围(“C”和j)*图纸(“订单列表”)。范围(“D”和j) 图纸(“订单列表”)。范围(“F”&j)=上海名称 图纸(“订单列表”)。范围(“B”和“j+1”)=“” 表格(“订单列表”)。范围(“B”和j+2)=“VAT”。加粗。居中 图纸(“订单列表”)。范围(“E”和“j+1”)=“” 工作表(“订单列表”).Range(“E”和j+2)=Application.WorksheetFunction.Sum(列(“E:E”)) 图纸(“订单列表”)。范围(“B”和j+3)=“总计”。粗体。中间图纸(“订单列表”)。范围(“E”和j+3)=应用程序。工作表功能。总和(列(“E:E”)) j=j+1 如果结束 接下来我 如果结束 下一个sh 表(“订单列表”)。列(“A”)。自动调整 表格(“订单列表”)。栏(“B”)。栏宽=90 表(“订单列表”)。列(“C:D”)。自动调整 表格(“订单列表”)。列(“E:F”)。自动调整。下划线。中心 对于ActiveWorkbook.Sheets中的每个sh 如果sh.名称为“订单列表”,sh.名称为“索引”,sh.名称为“选择器”,则 lastRow=sh.Cells(sh.Rows.Count,“A”).End(xlUp).Row 对于i=28至最后一行 如果sh.Range(“G”&i)>0,则 sh.Range(“G”和i)。选择 选择.ClearContents 如果结束 接下来我 如果结束 下一个sh 端接头

Vba 尝试加粗、居中和下划线列,并在生成顺序后清除列 我试图< 1 > 中心,并在列表表中从列22到空白行下划线列E和F。strong>2)加粗,并将电子表格中的增值税和总额居中3)生成订单列表后,清除其他表单中的G28列。但是,它没有下划线、集中或粗体。你能帮我看看吗?下面是我的代码。非常感谢 Option Explicit Sub copy_info() Dim i As Long, j As Long, lastRow As Long Dim sh As Worksheet With Sheets("Order List") .Cells.Clear .Range("A21") = "PART CODE" .Range("B21") = "DESCRIPTION" .Range("C21") = "PRICE" .Range("D21") = "QUANTITY" .Range("E21") = "NET AMOUNT" .Range("F21") = "SHEET NAME" .Range("A21:F21").Font.Bold = True End With j = 22 For Each sh In ActiveWorkbook.Sheets If sh.Name <> "Order List" And sh.Name <> "INDEX" And sh.Name <> "SELECTOR" Then lastRow = sh.Cells(sh.Rows.Count, "A").End(xlUp).Row For i = 28 To lastRow If sh.Range("G" & i) > 0 Then sh.Range("b" & i).Copy Destination:=Worksheets("Order List").Range("A" & j) sh.Range("e" & i & ":g" & i).Copy Destination:=Worksheets("Order List").Range("B" & j) Sheets("Order List").Range("E" & j) = Sheets("Order List").Range("C" & j) * Sheets("Order List").Range("D" & j) Sheets("Order List").Range("F" & j) = sh.Name Sheets("Order List").Range("B" & j + 1) = "" Sheets("Order List").Range("B" & j + 2) = "VAT".bold.center Sheets("Order List").Range("E" & j + 1) = "" Sheets("Order List").Range("E" & j + 2) = Application.WorksheetFunction.Sum(Columns("E:E")) Sheets("Order List").Range("B" & j + 3) = "TOTAL".bold.center Sheets("Order List").Range("E" & j + 3) = Application.WorksheetFunction.Sum(Columns("E:E")) j = j + 1 End If Next i End If Next sh Sheets("Order List").Columns("A").AutoFit Sheets("Order List").Columns("B").ColumnWidth = 90 Sheets("Order List").Columns("C:D").AutoFit Sheets("Order List").Columns("E:F").AutoFit.Underline.Center For Each sh In ActiveWorkbook.Sheets If sh.Name <> "Order List" And sh.Name <> "INDEX" And sh.Name <> "SELECTOR" Then lastRow = sh.Cells(sh.Rows.Count, "A").End(xlUp).Row For i = 28 To lastRow If sh.Range("G" & i) > 0 Then sh.Range("G" & i).Select Selection.ClearContents End If Next i End If Next sh End Sub 选项显式 子副本_信息() 我长,j长,最后一排长 将sh设置为工作表 带图纸(“订单清单”) .细胞,清除 .范围(“A21”)=“零件代码” .范围(“B21”)=“说明” .范围(“C21”)=“价格” .范围(“D21”)=“数量” .范围(“E21”)=“净额” .范围(“F21”)=“图纸名称” .Range(“A21:F21”).Font.Bold=True 以 j=22 对于ActiveWorkbook.Sheets中的每个sh 如果sh.名称为“订单列表”,sh.名称为“索引”,sh.名称为“选择器”,则 lastRow=sh.Cells(sh.Rows.Count,“A”).End(xlUp).Row 对于i=28至最后一行 如果sh.Range(“G”&i)>0,则 sh.Range(“b”和i).复制目的地:=工作表(“订单列表”).Range(“A”和j) sh.Range(“e”&i&“:g”&i)。复制目的地:=工作表(“订单列表”)。Range(“B”&j) 图纸(“订单列表”)。范围(“E”和j)=图纸(“订单列表”)。范围(“C”和j)*图纸(“订单列表”)。范围(“D”和j) 图纸(“订单列表”)。范围(“F”&j)=上海名称 图纸(“订单列表”)。范围(“B”和“j+1”)=“” 表格(“订单列表”)。范围(“B”和j+2)=“VAT”。加粗。居中 图纸(“订单列表”)。范围(“E”和“j+1”)=“” 工作表(“订单列表”).Range(“E”和j+2)=Application.WorksheetFunction.Sum(列(“E:E”)) 图纸(“订单列表”)。范围(“B”和j+3)=“总计”。粗体。中间图纸(“订单列表”)。范围(“E”和j+3)=应用程序。工作表功能。总和(列(“E:E”)) j=j+1 如果结束 接下来我 如果结束 下一个sh 表(“订单列表”)。列(“A”)。自动调整 表格(“订单列表”)。栏(“B”)。栏宽=90 表(“订单列表”)。列(“C:D”)。自动调整 表格(“订单列表”)。列(“E:F”)。自动调整。下划线。中心 对于ActiveWorkbook.Sheets中的每个sh 如果sh.名称为“订单列表”,sh.名称为“索引”,sh.名称为“选择器”,则 lastRow=sh.Cells(sh.Rows.Count,“A”).End(xlUp).Row 对于i=28至最后一行 如果sh.Range(“G”&i)>0,则 sh.Range(“G”和i)。选择 选择.ClearContents 如果结束 接下来我 如果结束 下一个sh 端接头,vba,excel,Vba,Excel,这有点奇怪-您的顶部有选项Explicit,因此,由于编译错误,您的代码不应该工作。一旦您尝试运行代码,VBEditor应该会显示它们的确切位置 以下是一个例子: 代替: Sheets("Order List").Range("B" & j + 2) = "VAT".bold.center 写: Sheets("Order List").Range("B" & j + 2).value = "VAT" Sheets("Order List").Range("B" & j

这有点奇怪-您的顶部有
选项Explicit
,因此,由于编译错误,您的代码不应该工作。一旦您尝试运行代码,VBEditor应该会显示它们的确切位置

以下是一个例子:

代替:

Sheets("Order List").Range("B" & j + 2) = "VAT".bold.center
写:

Sheets("Order List").Range("B" & j + 2).value = "VAT"
Sheets("Order List").Range("B" & j + 2).Font.Bold = True
Sheets("Order List").Range("B" & j + 2).HorizontalAlignment = xlCenter
然后您可以进一步改进它,如下所示:

With Sheets("Order List").Range("B" & j + 2)
    .value = "VAT"
    .Font.Bold = True
    .HorizontalAlignment = xlCenter
End With

或者甚至编写一个单独的函数,只向其中传递范围和字符串。

这有点奇怪-顶部有
选项Explicit
,因此,由于编译错误,您的代码不应该工作。一旦您尝试运行代码,VBEditor应该会显示它们的确切位置

以下是一个例子:

代替:

Sheets("Order List").Range("B" & j + 2) = "VAT".bold.center
写:

Sheets("Order List").Range("B" & j + 2).value = "VAT"
Sheets("Order List").Range("B" & j + 2).Font.Bold = True
Sheets("Order List").Range("B" & j + 2).HorizontalAlignment = xlCenter
然后您可以进一步改进它,如下所示:

With Sheets("Order List").Range("B" & j + 2)
    .value = "VAT"
    .Font.Bold = True
    .HorizontalAlignment = xlCenter
End With

甚至可以编写一个单独的函数,只向其中传递范围和字符串。

您试图同时完成所有操作(第一部分为粗体和居中,底部为居中和下划线)。这在VBA中不起作用。必须一个接一个地采取行动

您的问题的一个可能解决方案是:

Sub copy_info()
    Dim i As Long, j As Long, lastRow As Long
    Dim sh As Worksheet

    With Sheets("Order List")
        .Cells.Clear
        .Range("A21") = "PART CODE"
        .Range("B21") = "DESCRIPTION"
        .Range("C21") = "PRICE"
        .Range("D21") = "QUANTITY"
        .Range("E21") = "NET AMOUNT"
        .Range("F21") = "SHEET NAME"
        .Range("A21:F21").Font.Bold = True
    End With

    j = 22

    For Each sh In ActiveWorkbook.Sheets
            If sh.Name <> "Order List" And sh.Name <> "INDEX" And sh.Name <> "SELECTOR" Then
                lastRow = sh.Cells(sh.Rows.Count, "A").End(xlUp).Row
                For i = 28 To lastRow
                    If sh.Range("G" & i) > 0 Then
                        sh.Range("b" & i).Copy Destination:=Worksheets("Order List").Range("A" & j)
                        sh.Range("e" & i & ":g" & i).Copy Destination:=Worksheets("Order List").Range("B" & j)
                        Sheets("Order List").Range("E" & j) = Sheets("Order List").Range("C" & j) * Sheets("Order List").Range("D" & j)
                        Sheets("Order List").Range("F" & j) = sh.Name
                        Sheets("Order List").Range("B" & j + 1) = ""
                        Sheets("Order List").Range("B" & j + 2) = "VAT"
                        Sheets("Order List").Range("B" & j + 2).Font.Bold = True
                        Sheets("Order List").Range("B" & j + 2).HorizontalAlignment = xlCenter

                        Sheets("Order List").Range("E" & j + 1) = ""
                        Sheets("Order List").Range("E" & j + 2) = Application.WorksheetFunction.Sum(Columns("E:E"))
                        Sheets("Order List").Range("B" & j + 3) = "TOTAL"
                        **Sheets("Order List").Range("B" & j + 3).Font.Bold = True
                        Sheets("Order List").Range("B" & j + 3).HorizontalAlignment = xlCenter**

                        Sheets("Order List").Range("E" & j + 3) = Application.WorksheetFunction.Sum(Columns("E:E"))

                        j = j + 1
                    End If
                Next i
            End If
        Next sh
        Sheets("Order List").Columns("A").AutoFit
        Sheets("Order List").Columns("B").ColumnWidth = 90
        Sheets("Order List").Columns("C:D").AutoFit
        Sheets("Order List").Columns("E:F").AutoFit
        Sheets("Order List").Columns("E:F").HorizontalAlignment = xlCenter
        Sheets("Order List").Columns("E:F").Font.Underline = xlUnderlineStyleSingle

        For Each sh In ActiveWorkbook.Sheets
           If sh.Name <> "Order List" And sh.Name <> "INDEX" And sh.Name <> "SELECTOR" Then
                lastRow = sh.Cells(sh.Rows.Count, "A").End(xlUp).Row
                For i = 28 To lastRow
                  If sh.Range("G" & i) > 0 Then
                  sh.Range("G" & i).Select
                  Selection.ClearContents
            End If
           Next i
        End If
    Next sh

End Sub
子副本_info()
我长,j长,最后一排长
将sh设置为工作表
带图纸(“订单清单”)
.细胞,清除
.范围(“A21”)=“零件代码”
.范围(“B21”)=“说明”
.范围(“C21”)=“价格”
.范围(“D21”)=“数量”
.范围(“E21”)=“净额”
.范围(“F21”)=“图纸名称”
.Range(“A21:F21”).Font.Bold=True
以
j=22
对于ActiveWorkbook.Sheets中的每个sh
如果sh.名称为“订单列表”,sh.名称为“索引”,sh.名称为“选择器”,则
lastRow=sh.Cells(sh.Rows.Count,“A”).End(xlUp).Row
对于i=28至最后一行
如果sh.Range(“G”&i)>0,则
sh.Range(“b”和i).复制目的地:=工作表(“订单列表”).Range(“A”和j)
sh.Range(“e”&i&“:g”&i)。复制目的地:=工作表(“订单列表”)。Range(“B”&j)
图纸(“订单列表”)。范围(“E”和j)=图纸(“订单列表”)。范围(“C”和j)*图纸(“订单列表”)。范围(“D”和j)
图纸(“订单列表”)。范围(“F”&j)=上海名称
图纸(“订单列表”)。范围(“B”和“j+1”)=“”
表(“订单清单”)。范围(“B”和j+2)=“增值税”
图纸(“订单列表”)。范围(“B”&j+2)。Font.Bold=True
图纸(“订单列表”)。范围(“B”&j+2)。水平对齐=xlCenter
图纸(“订单列表”)。范围(“E”和“j+1”)=“”
工作表(“订单列表”).Range(“E”和j+2)=Application.WorksheetFunction.Sum(列(“E:E”))
图纸(“订单清单”)。范围(“B”和j+3)=“总计”
**工作表(“订单列表”)。范围(“B”&j+3)。Font.Bold=True
图纸(“订单列表”)。范围(“B”&j+3)。水平对齐=xlCenter**
工作表(“订单列表”).Range(“E”和j+3)=Application.WorksheetFunction.Sum(列(“E:E”))
j=j+1
如果结束
接下来我
如果结束
下一个sh
希