在 Excel 宏中设置图表坐标、标题和添加文本的代码格式建议

2024-01-25

编写了一个宏,用 Excel 绘制带有标记的线,它在单个宏 xlsm 文件中运行良好。但是当我尝试将其转换为 Excel 插件(xlam 文件)时,它出现了很多错误。所有错误都与 X 和 Y 坐标的格式、图表标题的位置、字体类型和大小以及添加文本的位置、字体类型和大小有关。不确定是什么原因,需要知道它们的正确格式。任何调试建议或帮助,非常感谢。请参阅错误消息和我的完整宏代码,如下所示。谢谢。

错误消息是运行时错误'-21474627161 (800004003)':对象不再有效。

单击调试后,代码“.left=358”以黄色突出显示。

但是你用Excel检查过,绘图是在没有图表标题和添加文本(我想要的)的情况下绘制的,并且坐标的格式不是我试图设置的。同样,所有这些错误仅发生在 xlam 文件中,该宏与 xlms fie 配合良好。

Sub strain_plot()


    sh_rows = ActiveWorkbook.ActiveSheet.Range("B65535").End(xlUp).Row


    For i = 1 To sh_rows

        If ActiveSheet.Cells(i, 1).Value < 0.000001 Then

            ActiveSheet.Cells(i, 1).Value = 1000000000# * ActiveSheet.Cells(i, 1).Value

        End If
    Next i


    ii = sh_rows


    c_name = "chart1"

    On Error GoTo err:
    ActiveWorkbook.ActiveSheet.ChartObjects(c_name).Delete
    err:
    Set ch = ActiveWorkbook.ActiveSheet.ChartObjects.Add(330, 120, 480, 270)  'set graph position and size
    ch.Name = c_name



    With ch.Chart

    For iii = 1 To 2

    .SeriesCollection.NewSeries
    .SeriesCollection(iii).Values = Range(ActiveWorkbook.ActiveSheet.Cells(1, iii + 1), ActiveWorkbook.ActiveSheet.Cells(ii, iii + 1))
    .SeriesCollection(iii).XValues = Range(ActiveWorkbook.ActiveSheet.Cells(1, 1), ActiveWorkbook.ActiveSheet.Cells(ii, 1))


    .SeriesCollection(iii).ChartType = xlLineMarkers

    Next iii

    .SeriesCollection(1).Name = "[110]"
    .SeriesCollection(1).MarkerStyle = 2
    .SeriesCollection(1).MarkerSize = 12
    .SeriesCollection(1).MarkerForegroundColor = RGB(255, 0, 0)
    .SeriesCollection(1).MarkerBackgroundColor = RGB(255, 0, 0)
    .SeriesCollection(1).Format.Fill.ForeColor.RGB = RGB(255, 0, 0)



    .SeriesCollection(2).Name = "[001]"
    .SeriesCollection(2).MarkerStyle = 2
    .SeriesCollection(2).MarkerSize = 12
    .SeriesCollection(2).MarkerForegroundColor = RGB(96, 96, 96)
    .SeriesCollection(2).MarkerBackgroundColor = RGB(96, 96, 96)
    .SeriesCollection(2).Format.Fill.ForeColor.RGB = RGB(96, 96, 96)


       With .Legend

            .IncludeInLayout = False
            .Position = xlLegendPositionRight
            .AutoScaleFont = False
            .Font.Size = 14
            .Top = 25
            .Left = 392
            .Width = 72
            .Height = 40

        End With



    With .ChartArea.Fill

      .Visible = msoTrue
          .ForeColor.SchemeColor = 33

          .Solid

    End With


     With .SeriesCollection(1).Format.Line
            .Visible = msoTrue
            .ForeColor.RGB = RGB(255, 0, 0)  'red
            .Transparency = 0

    End With



     With .SeriesCollection(2).Format.Line
            .Visible = msoTrue
            .ForeColor.RGB = RGB(96, 96, 96) 'grey
            .Transparency = 0
    End With



    .HasTitle = True
        With .ChartTitle

        .Text = ActiveWorkbook.ActiveSheet.Cells(5, 8)
         .Left = 358
         .Top = 236

        With .Font

        .Name = "Tahoma"
        .Size = 10


        End With

    End With


      With .Axes(xlCategory)

        .HasTitle = True
        .AxisTitle.Text = "Position(nm)"  'X-axis title
        .TickLabels.Font.Size = 10 'X-axis coordinate number size
        .AxisTitle.Font.Size = 14  'X-axis title word font size
        .TickMarkSpacing = 3
        .TickLabelSpacing = 5
        .TickLabels.NumberFormatLocal = "#,##0._);[red](#,##0.)"
        .TickLabels.NumberFormatLocal = "#,##0_);[red](#,##0)"
        .TickLabels.NumberFormatLocal = "0_);[red](0.)"

    End With

      With .Axes(xlValue)

       .HasTitle = True
       .AxisTitle.Text = "Strain"   'Y-aixs title
       .AxisTitle.Font.Size = 14  'y-axis title word font size
       'Minimum value of Y axis
       .Axes(xlValue).MinimumScale = -0.005
       .Axes(xlValue).TickLabels.NumberFormatLocal = "0.0%"

       End With

    End With


      Dim thechartobj As ChartObject

    Set thechartobj = ActiveWorkbook.ActiveSheet.ChartObjects(ch.Name)

    Dim thechart As Chart

    Set thechart = thechartobj.Chart

    Dim thetextbox As Shape

    Set thetextbox = thechart.Shapes.AddTextbox(msoTextOrientationHorizontal, 688, 372, 122, 20)
    With thetextbox.TextFrame.Characters

    .Text = ActiveSheet.Cells(6, 8)

    With .Font

      .Name = "tahoma"
      .Size = 10
      .Bold = msoTrue

      End With

     End With


    End Sub

None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Excel 宏中设置图表坐标、标题和添加文本的代码格式建议 的相关文章

  • 如何模拟“焦点”和“打字”事件

    尝试模拟 onfocus 和打字事件 但它不起作用 Sub Login MyLogin MyPass Dim IEapp As InternetExplorer Dim IeDoc As Object Dim ieTable As Obje
  • 无法在我的抓取工具中设置超时选项以防止无限循环

    我已经使用 IE 在 vba 中编写了一个脚本 在其搜索框中的网页中启动搜索 通过点击搜索按钮根据搜索填充结果 网页加载它是searchbox几秒钟后它就会打开 但是 我的下面的脚本可以处理这个障碍并以正确的方式执行搜索 现在 我有一个稍微
  • 使用 VBA 的下拉菜单

    我需要使用 VBA 从下拉菜单中选择特定选项 我怎样才能做到这一点 链接到我们试图从中提取的网页 IE document getElementsByName down count click 我尝试过的代码 Full Module Priv
  • VBA 中的多线程

    这里有人知道如何让VBA运行多线程吗 我正在使用 Excel 无法用 VBA 本地完成 VBA 构建在单线程单元中 获得多个线程的唯一方法是使用 VBA 之外的其他具有 COM 接口的东西构建 DLL 并从 VBA 调用它 信息 OLE 线
  • 在合并的单元格中选择、插入照片并将其居中

    我是一名研发面包师 正在为我的团队制作食谱模板 模板中有照片 但我需要轻松地允许他们单击一个按钮 打开照片的文件选择器 然后将该照片放在合并的单元格中 我其实不太擅长做这个 Sub InsertPhotoMacro Dim photoNam
  • Excel FILTER() 对于空白单元格返回 0

    我怀疑以前有人问过这个问题 但我找不到 FILTER 即使指定了返回字符串 通常也会为空白行返回 0 Using filter 我经常收到空单元格的 0 返回值 假设 A 列中有 6 行数据 abc xyz abc xyz abc If I
  • VBA 有没有办法了解未使用的变量?

    标准 VBA 编辑器中是否有工具 方法或设置来警告已被修改的变量Dim med 但没有被使用 MZ Tools http www mztools com index aspx将搜索您的代码并告诉您哪些内容未被使用 VBA的版本可以找到her
  • SQL Server,插入 Excel“链接服务器”时出现“无效列名”错误

    我有一个简单的 Excel 电子表格文档 运行 Office 2013 我使用 Microsoft Office 15 0 Access 数据库引擎 OLE DB 提供程序 将其用作数据库 我可以使用 MS SQL Server Manag
  • VBA 中 AND 函数如何工作?

    如果这是一个愚蠢的问题 我很抱歉 但是 Excel VBA AND 函数是否检查其中的每个条件然后继续 或者在第一个 FALSE 条件处停止而不检查其他条件 我想知道出于优化目的 但到目前为止在网上没有找到任何相关信息 提前致谢 示例 如果
  • Excel 数字缩写格式

    这是我想要完成的任务 Value Display 1 1 11 11 111 111 1111 1 11k 11111 11 11k 111111 111 11k 1111111 1 11M 11111111 11 11M 11111111
  • 标志状态的 VBA 替换

    根据文档 Outlook 中的 MailItem FlagStatus 属性是已弃用 https msdn microsoft com en us library microsoft office interop outlook maili
  • 使用 OpenPyXL 迭代工作表和单元格,并使用包含的字符串更新单元格[重复]

    这个问题在这里已经有答案了 我想使用 OpenPyXL 来搜索工作簿 但我遇到了一些问题 希望有人可以帮助解决 以下是一些障碍 待办事项 我的工作表和单元格数量未知 我想搜索工作簿并将工作表名称放入数组中 我想循环遍历每个数组项并搜索包含特
  • 在VBA中初始化全局变量

    在 Excel 2003 中 如何声明全局变量并仅在打开工作簿时初始化它们一次 我有一些由几个宏使用的参数 基本上是输入文件的路径 目前 我的代码如下所示 global path1 path2 as string sub initPaths
  • 在 PYTHON 中读取 EXCEL 时,“utf-16-le”编解码器无法解码字节

    我正在尝试读取不同语言 阿拉伯语 希腊语 意大利语 希伯来语等 的各种数量的 xls 文件 当我尝试调用 open workbook 函数时 出现如下所示的错误 不知道如何将格式设置为任何语言 Code book xlrd open wor
  • SQL Excel VBA 运行时错误 3709 无效连接

    这是我的第一个问题 欢迎提出建设性的批评 我正在尝试从 Excel VBA 查询 Access 数据库并将返回信息放入 Excel 范围中 我收到此错误 错误消息 运行时错误 3709 连接无法用于 执行此操作 在此情况下它已关闭或无效 语
  • 有没有更快的方法来使用Powershell解析Excel文档?

    我正在与一个接口MS Excel文件通过Powershell 每个 Excel 文档可能有大约 1000 行数据 目前这个脚本似乎读取了Excel文件并以每 0 6 秒 1 条记录的速率将值写入屏幕 乍一看 这似乎非常慢 这是我第一次阅读E
  • Excel 2003 中的 IFERROR

    我通过阅读几个线程了解到IFERROR在 Excel 2003 中由IF ISERROR 我尝试从 Excel 2007 复制的代码是 IFERROR A1 我知道必须有一个简单的解决方案将其转换为IF ISERROR 但我没有任何效果 意
  • 在 Excel 中使用 VBA 设置图像透明度

    有没有办法使用 VBA 脚本对图像应用一些透明度 我录制了一个 宏 但似乎没有录制艺术效果 我已经找到了如何制作形状 但没有找到图像 这需要几个步骤 将自选图形 如矩形 放置在工作表上 使用以下方法将您的实际图片嵌入矩形中 ShapeRan
  • 使用 VBScript 在日期字段值上选择错误的数据

    我有一张包含以下数据的表 现在 Excel 共有 36 个任务 每个任务有 4 列 第一个任务 即 Task1 名称将始终从 L 列开始 144 列描述了 36 个任务 现在我们需要按行进行检查 并需要检查 TNStart 开始日期 你们能
  • 使用 XMLHTTP 进行抓取会在特定类名处引发错误

    我正在尝试使用此代码抓取网站以提取姓名和联系人 Sub Test Dim htmlDoc As Object Dim htmlDoc2 As Object Dim elem As Variant Dim tag As Variant Dim

随机推荐