如何以这种方式将数据粘贴到列和行中

2024-01-25

我有一些标签数据要根据用户定义的输入值以列和行格式打印。它们是基于 3 个主要输入的条件:

1) 要跳过的起始标签数量 2) 每行标签数量 3) 每页行数

我有一份数据表,其中 A 列中包含数据,B 列中包含要打印的份数。我在希望打印的页面中附加了具有不同输入和输出的示例图像。还提供了可能与我的目的相关的代码链接。

数据表

打印表

我的代码限制为 3 列,行数不受限制,并且不能跳过

Here 您可以调整用户窗体的这些代码吗:使其小而高效 https://stackoverflow.com/questions/61000484/can-you-tweak-these-codes-for-userform-make-it-small-and-efficient是 @Brian M Stafford 给出的动态用户表单文本框创建的代码,但不确定如何实现此目的

Public Sub GenerateLabels()
Dim CopyRowValue As String
Dim SecondDataCol, ThirdDataCol, FirstDataCol As Long
Dim SecondDataRow, ThirdDataRow, FirstDataRow As Long

Set shdata = ThisWorkbook.Sheets("Database")
Set shgenerate = ThisWorkbook.Sheets("LabelGenerate")
Set shDesignFormat = ThisWorkbook.Sheets("LabelDesignFormatBeforePrint")

FirstDataCol = shgenerate.Cells(1, shgenerate.Columns.Count).End(xlToLeft).Column
SecondDataCol = shgenerate.Cells(1, shgenerate.Columns.Count).End(xlToLeft).Column
ThirdDataCol = shgenerate.Cells(1, shgenerate.Columns.Count).End(xlToLeft).Column

FirstDataRow = shgenerate.Cells(shgenerate.Rows.Count, "A").End(xlUp).Row
SecondDataRow = shgenerate.Cells(shgenerate.Rows.Count, "C").End(xlUp).Row
ThirdDataRow = shgenerate.Cells(shgenerate.Rows.Count, "E").End(xlUp).Row

'======== Copy From Data Sheet============

Last_Row = Sheets("Database").Range("A" & Rows.Count).End(xlUp).Row

For r = 2 To Last_Row  

shdata.Cells(x, "A").Copy
shDesignFormat.Range("B3").Paste 'pasting data to design sheet before print (to format data)

CopyRowValue = Worksheets("Database").Cells(r, "B").value 

For r2 = 1 To CopyRowValue 

'=====Paste to Generate Sheet ====

'Cells(FirstDataRow + 1, FirstDataCol + 1).Offset(0, 0).Select
If IsEmpty(shgenerate.Cells(FirstDataRow + 0, FirstDataCol + 0).Offset(0, 0).value) = True Then

shDesignFormat.Range("B3").Copy _
Destination:=shgenerate.Cells(FirstDataRow + 0, FirstDataCol + 0).Offset(0, 0)

ElseIf IsEmpty(shgenerate.Cells(SecondDataRow + 0, SecondDataCol + 2).Offset(0, 0).value) = True Then 'offset used to find empty cell if design layout changed
shDesignFormat.Range("B3").Copy _
Destination:=shgenerate.Cells(SecondDataRow + 0, SecondDataCol + 2).Offset(0, 0)

ElseIf IsEmpty(shgenerate.Cells(ThirdDataRow + 0, ThirdDataCol + 4).Offset(0, 0).value) = True Then
shDesignFormat.Range("B3").Copy _
Destination:=shgenerate.Cells(ThirdDataRow + 0, ThirdDataCol + 4).Offset(0, 0)


SecondDataRow = SecondDataRow + 2
ThirdDataRow = ThirdDataRow + 2
FirstDataRow = FirstDataRow + 2

End If

Next r2

Next r

Application.CutCopyMode = False

End Sub

看着你的代码,我的第一个想法是它可以简化。完成此操作后,我开始修改以添加所需的要求。主要任务是跟踪当前位置。代码最终是这样的:

Option Explicit

Public Sub GenerateLabels(ByVal LabelsToSkip As Integer, ByVal LabelsPerRow As Integer, ByVal RowsPerPage As Integer)
   Dim shdata As Worksheet
   Dim shgenerate As Worksheet
   Dim shDesignFormat As Worksheet
   Dim curRow As Long
   Dim curCol As Long
   Dim RowsPerPageCount As Long
   Dim r As Long
   Dim r2 As Long

   Set shdata = ThisWorkbook.Sheets("Database")
   Set shgenerate = ThisWorkbook.Sheets("LabelGenerate")
   Set shDesignFormat = ThisWorkbook.Sheets("LabelDesignFormatBeforePrint")

   shgenerate.UsedRange.ClearContents

   curRow = 1
   curCol = 1
   RowsPerPageCount = 1

   For r = 2 To shdata.Range("A" & Rows.Count).End(xlUp).Row
      '======== Copy From Data Sheet============
      shdata.Cells(r, "A").Copy
      shDesignFormat.Range("B3").PasteSpecial  'pasting data to design sheet before print (to format data)

      For r2 = 1 To shdata.Cells(r, "B").Value + LabelsToSkip
         '=====Paste to Generate Sheet ====
         If curCol > LabelsPerRow * 2 Then  '* 2 for double spacing
            curCol = 1

            If RowsPerPage > 0 And (RowsPerPageCount + 1) Mod (RowsPerPage + 1) = 0 Then
               curRow = curRow + 10  'new page
               RowsPerPageCount = 1
            Else
               curRow = curRow + 2
               RowsPerPageCount = RowsPerPageCount + 1
            End If
         End If

         If r2 > LabelsToSkip Then
            LabelsToSkip = 0
            shDesignFormat.Range("B3").Copy Destination:=shgenerate.Cells(curRow, curCol)
         End If

         curCol = curCol + 2
      Next r2
   Next r

   Application.CutCopyMode = False
End Sub

我建议使用Option Explicit并声明您需要的所有变量。

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

如何以这种方式将数据粘贴到列和行中 的相关文章

  • 在 Excel 表格中选择多列的代码

    我是 Excel VBA 新手 我需要修改我的代码 以便我能够进一步进行 我想在 Excel 表格中选择多个表格列 这是我的代码 Dim ws As Worksheet Dim tbl As ListObject Set ws Sheets
  • excel 2010刷新BackgroundQuery中运行时错误1004

    我正在尝试用 vba 编写一个脚本 用于将多个文本文件导入 Excel 一张纸 然后将它们绘制在一张图表上 我面临一个问题刷新后台查询命令并出现 1004 运行时错误 我怎样才能解决它 谢谢 埃亚勒 这是我的代码 Sub fring1 Di
  • 合并和颜色样式不适用于 Apache POI excel 2003 格式

    在 Apache POI 中 我为某些单元格应用了一些样式并合并了这些单元格 当我在 2010 年或 2007 年打开时 它工作正常 但在 2003 年 格式样式消失了 每次保存 2003 Excel 文件之前都会弹出兼容性检查对话框 请参
  • Office excel将CORS请求作为跨域请求

    我正在尝试从我的 Excel 插件发出跨域请求 正如这里所建议的 http dev office com docs add ins develop addressing same origin policy limitations http
  • 如何在 Excel 中对一组数据进行排序以匹配另一组数据?

    我有一个不按字母或数字顺序排列的数据列表 我想对同一日期的第二个列表进行排序以匹配第一个列表 我无法更改数据的顺序 我的目标是将第二组中的附加数据粘贴回第一个数据集中 DATA SET A DATA SET B 22350 BH160 10
  • 在合并的单元格中选择、插入照片并将其居中

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

    我怀疑以前有人问过这个问题 但我找不到 FILTER 即使指定了返回字符串 通常也会为空白行返回 0 Using filter 我经常收到空单元格的 0 返回值 假设 A 列中有 6 行数据 abc xyz abc xyz abc If I
  • 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
  • 如何在Power Query中对N列求和

    我的数据每月都会更新 因此我尝试创建一个强大的查询表 该表将显示我创建的枢转 N 列的总和 但我似乎不知道如何在强大的查询中执行此操作 我目前有这个代码 旋转后 创建要求和的列的列表 添加索引列以限制每行 添加一列 该列对该行的列进行求和
  • 输入新行并复制上面单元格中的公式

    我正在尝试创建一个 Excel 宏来执行以下操作 在文档末尾输入新行 复制上面单元格中的公式 到目前为止我有这个 Sub New Delta Go to last cell Range A4 Select Selection End xlD
  • 标志状态的 VBA 替换

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

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

    我正在 Excel 中创建一个仪表板 但是我想知道是否有比这更好的编码方式 我想对其进行模块化 而不是这样做以使其更加整洁 Private Sub Afford If af Value True Then af afr Value Shee
  • 使用 FindElementbyXpath() 获取 Selenium Basic 中可填充框的行和列名称

    我正在使用 Selenium Basic 将电子表格中的文本填充到网站中 网站的html代码是这样的 div table cellspacing 0 border 1 style width 99 tr th style font weig
  • C# 无法将欧元符号打印到文件中(使用 Excel 打开时)

    我在使用 Web api 控制器的 get 方法时遇到问题 此方法返回一个 HttpResponseMessage 对象 该对象具有带有 csv 文件的 HttpContent 其中包含欧元符号 当该方法返回文件时 不会打印欧元符号 该方法
  • 如何使用 VBA 添加 MS Outlook 提醒事件处理程序

    我想扩展 MS Outlook 以便当弹出日历提醒时 我可以运行一个可以运行外部程序 如批处理脚本 的 VBA 挂钩 就我而言 我想将提醒 转发 到 Linux 桌面 因为我在这两种环境中工作 并且 Windows 桌面并不总是可见 我看到
  • 在 Excel 中生成随机 -1 和 +1 值

    The Rand 函数会生成一个 0 到 1 之间的实数 这Randbetween 1 1 将生成 1 0 或 1 我想要的只是 1或1 那么 1 到 1 之间的实数呢 Easy IF RAND lt 0 5 1 1 要获得实数 请使用 R
  • 使用 VBScript 在日期字段值上选择错误的数据

    我有一张包含以下数据的表 现在 Excel 共有 36 个任务 每个任务有 4 列 第一个任务 即 Task1 名称将始终从 L 列开始 144 列描述了 36 个任务 现在我们需要按行进行检查 并需要检查 TNStart 开始日期 你们能
  • 如何使用vba复制Excel工作表中的动态范围

    我试图使宏中的范围是动态的 而不指定最后一行x Sheets SheetName Range A2 K1000 Copy在 1000 行中 我想将其更改为动态 因为有时我的数量会更少或更多 尝试这个 Sub Test Dim lRow as
  • 在 VBA 中捕获 shell 命令的输出值?

    发现这个功能http www cpearson com excel ShellAndWait aspx http www cpearson com excel ShellAndWait aspx 但我还需要捕获 shell 的输出 有什么代

随机推荐

  • Oracle ODP.NET 连接字符串:数据源中有什么?

    这是 ODP NET 的 ConnectionStrings com 字符串 很棒 但是什么是数据源 数据源 TORCL 用户ID someUser 密码 son28dnn 是控制面板中的DSN吗 服务器名称 TNS 命名服务名称 Than
  • 如何从 OpenXML 中的名称或工作表 ID 获取 Worksheetpart?

    下面创建一个 XLSX 添加两个包含一些数据的工作表 然后 我希望能够稍后根据名称 或者最好是 ID 获取电子表格 以便我可以在稍后的时间点添加 修改工作表 我不知道如何再次获取下面代码不完整的工作表 Sub Main Using doc
  • 如何使用 Node.JS 进行请求 HTTP 摘要身份验证?

    我必须使用 Node JS 为 API 文档编写一些代码 但我在过去几天尝试了在网络上找到的所有解决方案 当然包括 Stack 但没有成功 我的 API 使用 HTTP Digest Auth 这就是问题所在 我能够连接 这不是什么大问题
  • 按 Cassandra 中的任何字段排序

    我正在研究 cassandra 作为我即将进行的项目的可能解决方案 我研究得越多 我就越常听到这样的说法 对创建表时未设置排序的字段进行排序是一个坏主意 是否可以对任何字段进行排序 如果对不在集群中的字段进行排序会对性能产生影响 那么性能影
  • 配置温莎城堡和通用

    这是我在 Global asax 中的代码 WindsorContainer container new WindsorContainer container Register Component For typeof IRepositor
  • Scrapy中不同start_url的不同解析函数

    Scrapy可以为每个start url设置不同的解析函数吗 这是一段伪代码 start urls http 111sssssssss com http 222sssssssssssss com http 333sssssssssss co
  • 如何计算 git 树哈希?

    对于 Nodejs 项目 我需要确定文件夹的哈希值来检查版本 实际上 我制作了一个脚本来测试我的代码 没有文件系统 直接使用 git api 进行测试 但它有一半的时间有效 A1 https api github com repos zes
  • MySQL 按特定 24 小时间隔进行分组

    我有一个 MySQL 表 每行都有时间戳值 我的目标是对金额列的值求和 并按自定义 24 小时间隔 每天 05 30 00 开始 进行分组 input timestamp amount 2015 01 19 08 30 12 4 2015
  • 如何在数学图中画三角形?

    如何在显示 X 轴和 Y 轴的数学图表中绘制三角形 要使用 ActionScript2 绘制形状 您可以使用moveTo and lineTo MovieClip 对象的方法 您可以指定线条颜色和粗细线条样式 或者使用以下方法制作实体形状开
  • 如何从 CMake 中隐藏 Visual Studio 中的目标

    我正在使用 CMake 生成 sln 我想使用 Google Test 并使用此类代码来添加新测试 add executable my test test my test cpp target link libraries my test
  • 在数组中查找本地分钟

    有没有一种简单的方法来确定值数组的局部最小值和最大值 例如 Element Value Note 1 1 2 3 3 5 4 6 5 7 max 5 5 6 4 min 7 6 8 9 9 10 max 10 8 11 7 12 5 min
  • 动态获取 Android 设备的供应商 ID

    我想要得到Vendor ID通过我的代码访问我的 Android 设备 我读过这个 http developer android com tools device html http developer android com tools
  • 为什么在 hashcode() 实现中选择 31 来进行乘法? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么Java的String中的hashCode 使用31作为乘数 https stackoverflow com questions 299304 why does javas hashcode i
  • 使用一对多 JOIN 进行更新(多列)

    我遇到了一个问题 我不确定这是否是预期的行为 我在网上搜索了答案 但我所能找到的只是关于最后更新的行以及查询后的值是多少 我知道在这种情况下不存在订单之类的东西 并且您无法提前确定其价值是多少 但就我而言 我正在更新不同的列 因此覆盖以前的
  • Java 服务器的语言支持在过去 3 分钟内崩溃了 5 次。服务器不会重新启动

    添加 gitlab 后 我的 flutter 项目无法运行 代码无法运行 Android 应用程序 所以 我重新启动我的 Linux 电脑并再次尝试 现在它显示了此错误消息 Java 服务器的语言支持在过去 3 年内崩溃了 5 次 分钟 服
  • 是否可以为特定目标指定`panic = "abort"`?

    如果我指定panic像这样 它适用于所有目标 profile release panic abort 我想指定panic abort 仅适用于target arm linux androideabi 您需要添加一个 cargo config
  • 使用外部链接的CSS将边框应用于html元素[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 为什么我在通过外部链接的 CSS 文件设置 HTML 元素边框时遇到困难 帮助 我的 HTML 中的代码 section clas
  • 以 XSS 安全方式替换 AJAX 响应中的选项

    从内部succcess我的 AJAX 响应的方法 我的目标是以 XSS 安全的方式执行以下操作 删除所有现有的options在选择框中 替换同一选择框中的选项 这是删除和替换选项的一种方法 但我对这种策略完全安全的 XSS 没有很高的信心
  • 如何自行停止服务?

    我在一项活动中启动一项服务 然后我希望该服务在一段时间后自行停止 我在服务中调用了 stopSelf 但它不起作用 如何让服务自行停止 通过说 不起作用 我猜你的意思是onDestroy 未调用服务的方法 我也有同样的问题 因为我bound
  • 如何以这种方式将数据粘贴到列和行中

    我有一些标签数据要根据用户定义的输入值以列和行格式打印 它们是基于 3 个主要输入的条件 1 要跳过的起始标签数量 2 每行标签数量 3 每页行数 我有一份数据表 其中 A 列中包含数据 B 列中包含要打印的份数 我在希望打印的页面中附加了