Powerpoint VBA - 将 RGB 颜色作为变量传递

2024-01-21

我希望允许用户通过文本框输入 RGB 颜色并传递该变量来更改所有形状的颜色。我编写了一个循环,该循环将查看形状名称的最后 2 个字符,以确定是否应将其更改为主要颜色或次要颜色。

这是最新的 Office 365 的 Powerpoint。

我已经尝试过以下代码。我收到类型不匹配或无效参数错误:

Dim osld As Slide
Dim oshp As Shape
Dim strMainColor As String, strSecondColor As String

'Set main color to default if users didn't enter a RGB value
If MainColor.Value = "" Then strMainColor = "73, 109, 164" Else strMainColor = MainColor.Value

'Set Secondary color to default if users didn't enter a RGB value
If SecondColor.Value = "" Then strSecondColor = "207, 203, 201" Else strSecondColor = SecondColor.Value

For Each osld In ActivePresentation.Slides
For Each oshp In osld.Shapes
If Right(oshp.Name, 2) = "_1" Then
   'Main Color to all slides
   oshp.Fill.ForeColor.RGB = "RGB(" + strMainColor + ")"
   oshp.Fill.BackColor.RGB = "RGB(" + strMainColor + ")"
   ElseIf Right(oshp.Name, 2) = "_2" Then
    'Secondary Colors
    oshp.Fill.ForeColor.RGB = "RGB(" + strSecondColor + ")"
    oshp.Fill.BackColor.RGB = "RGB(" + strSecondColor + ")"
End If
Next oshp
Next osld



Dim osld As Slide
Dim oshp As Shape
Dim strMainColor As String, strSecondColor As String

'Set main color to default if users didn't enter a RGB value
If MainColor.Value = "" Then strMainColor = "73, 109, 164" Else strMainColor = MainColor.Value

'Set Secondary color to default if users didn't enter a RGB value
If SecondColor.Value = "" Then strSecondColor = "207, 203, 201" Else strSecondColor = SecondColor.Value

For Each osld In ActivePresentation.Slides
For Each oshp In osld.Shapes
If Right(oshp.Name, 2) = "_1" Then
   'Main Color to all slides
   oshp.Fill.ForeColor.RGB = RGB(strMainColor)
   oshp.Fill.BackColor.RGB = RGB(strMainColor)
   ElseIf Right(oshp.Name, 2) = "_2" Then
    'Secondary Colors
    oshp.Fill.ForeColor.RGB = RGB(strSecondColor)
    oshp.Fill.BackColor.RGB = RGB(strSecondColor)
End If
Next oshp
Next osld

怎么样使用窗口颜色选择器 http://vbnet.mvps.org/index.html?code/hooks/choosecolorcustomize.htm.

标准模块中的代码:

Option Explicit

Private Const CC_FULLOPEN = &H2
Private dwCustClrs(0 To 15) As Long

#If VBA7 Then
    Private Type COLORSTRUC
      lStructSize As Long
      hwndOwner As LongPtr
      hInstance As LongPtr
      rgbResult As Long
      lpCustColors As LongPtr
      flags As Long
      lCustData As LongPtr
      lpfnHook As LongPtr
      lpTemplateName As String
    End Type
#Else
    Private Type COLORSTRUC
      lStructSize As Long
      hwndOwner As Long
      hInstance As Long
      rgbResult As Long
      lpCustColors As Long
      flags As Long
      lCustData As Long
      lpfnHook As Long
      lpTemplateName As String
    End Type
#End If

#If VBA7 Then
    Private Declare PtrSafe Function ChooseColor Lib "comdlg32.dll" Alias "ChooseColorA" (pChoosecolor As COLORSTRUC) As Long
#Else
    Private Declare Function ChooseColor Lib "comdlg32.dll" Alias "ChooseColorA" (pChoosecolor As COLORSTRUC) As Long
#End If

Private Sub SetCustomColors() 'Define custom colors of picker here.
    dwCustClrs(0) = vbBlack
    dwCustClrs(1) = vbWhite
    dwCustClrs(2) = vbRed
    dwCustClrs(4) = vbGreen
    dwCustClrs(5) = vbBlue
    dwCustClrs(6) = RGB(0, 0, 0)
    dwCustClrs(7) = vbBlack
    dwCustClrs(8) = vbBlack
    dwCustClrs(9) = vbBlack
    dwCustClrs(10) = vbBlack
    dwCustClrs(11) = vbBlack
    dwCustClrs(12) = vbBlack
    dwCustClrs(13) = vbBlack
    dwCustClrs(14) = vbBlack
    dwCustClrs(15) = vbBlack
End Sub

Public Function ColorPickerDialog(Optional DefaultColor As Long = vbWhite) As Long
  Dim x As Long, CS As COLORSTRUC
  SetCustomColors 'Comment out if all custom colors should be black
  CS.lStructSize = LenB(CS) ' not Len, see https://codekabinett.com/rdumps.php?Lang=2&targetDoc=windows-api-declaration-vba-64-bit at end
  CS.flags = CC_FULLOPEN
  CS.lpCustColors = VarPtr(dwCustClrs(0))
  x = CHOOSECOLOR(CS)
  If x = 0 Then
    ColorPickerDialog = DefaultColor
    Exit Function
  Else
    ColorPickerDialog = CS.rgbResult
  End If
End Function

设置形状:

Dim osld As Slide
Dim oshp As Shape
Dim MainColor As Long, SecondColor As Long

'Chose MainColor
MainColor = ColorPickerDialog(RGB(73, 109, 164)) ' if no color choosen the default color RGB(73, 109, 164) is used

'Choose SecondColors
SecondColor = ColorPickerDialog(RGB(207, 203, 201))


For Each osld In ActivePresentation.Slides
    For Each oshp In osld.Shapes
        With oshp
            If Right(.Name, 2) = "_1" Then
               'Main Color to all slides
               .Fill.ForeColor.RGB = MainColor
               .Fill.BackColor.RGB = MainColor 
             ElseIf Right(.Name, 2) = "_2" Then
                'Secondary Colors
                .Fill.ForeColor.RGB = SecondColor
                .Fill.BackColor.RGB = SecondColor
            End If
        End With
    Next oshp
Next osld
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Powerpoint VBA - 将 RGB 颜色作为变量传递 的相关文章

  • 从html中获取属性字符串值

    我正在构建一个宏来使用从网站提取数据vba questions tagged vba 目前 我可以使用元素语法轻松地从表内容中获取值 例如obj getElementsByTagName td innerText 但是 当某些单元格中有一些
  • Bigquery:如何声明数组变量并使用 select 语句设置数据?

    我试图在 BigQuery 上声明一个数组变量 但无法在变量中放入 SQL 语句 我找不到任何与此相关的主题 我想将表的所有列名放入变量中 所以我尝试了以下方法 DECLARE my array ARRAY
  • Excel VBA:通过快捷键运行打开文档后宏挂起,但从 VB 编辑器运行完美

    我遇到了一个奇怪的问题 我决定分配一个键盘快捷键Ctrl Shift P我的 VBA 例程之一 该例程假设打开一个现有的 Excel 工作簿 复制一些信息并 SaveAs另一个名字 当我在 Visual Basic 编辑器中点击 播放 时
  • 如何使用户输入与变量相关?

    我不知道如何准确地表达这个问题 但这就是我想要实现的目标 我正在使用堆栈实现河内塔插图 这是里面的main 功能 System out println Type the source pole number and the destinat
  • 带有 For 循环的多维数组 VBA

    尝试检查第一列中的值 即多维数组中的列 如果它匹配 则对另一列中与该行匹配的值进行排序 我认为我做错了 但这是我第一次搞乱多维数组 我是否需要在每个 for 循环中使用 UBound 和 LBound 来告诉它要查看哪一列 除了当前问题的答
  • 我们可以使用 python 变量来保存整个文件吗?

    假设我们知道所有文件都将被加载到内存中并且我们负担得起 在 python 变量中加载整个文件 可能是二进制文件 有哪些缺点 如果有 或限制 如果有 如果这在技术上是可行的 是否应该避免这种情况 为什么 关于文件大小问题 该解决方案的最大大小
  • 在 Excel 2010 中添加基本功能区的 VBA 代码?

    我已经使用产品在 C addin express 中为 Excel 编写功能区 但我需要知道如何使用 vba 生成功能区 有人能为我提供一些代码来为此在工具栏中插入一个额外的功能区吗 我所说的功能区是指上面写着 公式 数据 评论 等的地方
  • 连接两列之间的排列

    我需要有关 Excel 作业的帮助 Name City John London Maxx NY Ashley DC Paris 解决这个问题的方法必须是 John london John NY John DC John Paris Maxx
  • 如何让 selenium 等待页面在 Selenium - Excel VBA 包装器中完全加载?

    Selenium Excel VBA 的包装器使用什么代码或函数 以便程序将等待页面完全加载然后执行其他命令 最新版本在执行所需操作之前隐式等待目标元素存在 例如 driver FindElementById Click 默认情况下会在抛出
  • 将图表导出为图像 - 只需单击按钮

    我正在尝试创建一个按钮 将 图表 工作表中的图表导出为 jpeg 文件 这是我的代码 但它不断显示此错误 运行时错误 424 需要对象 具体来说 Set myChart Graphs ChartObjects 3 Name Chart4 这
  • VBA Office2010 Shapes.PasteSpecial 失败

    我在将 VBA 代码从 Office2003 迁移到 Office2010 时遇到问题 我想将单元格 Excel 的文本复制到Powerpoint Office2003生成了一个新的文本框 文本样式与Excel中相同 现在我的代码在 Off
  • 仅在满足条件时添加到字典

    我在用urllib urlencode构建 Web POST 参数 但是有一些值我只想在除None为他们而存在 apple green orange orange params urllib urlencode apple apple or
  • 如何刷新幻灯片放映中的活动幻灯片?

    基于我的最后一个问题 https stackoverflow com questions 14503054 change the image of an image shape我得到了正确的代码来更改形状的图像 不幸的是 这不会更新活动演示
  • Excel Q - 带有二维数组的 SUMIFS

    我有一个二维数组 水平轴上的日期和垂直轴上的标识号 我想要以特定日期和 ID 为条件的总和 并且我想知道如何使用 SUMIFS 来执行此操作 由于某种原因 我似乎不能 因为数组是二维的 而标准范围是一维的 谁能给我关于我可以使用的其他公式的
  • 当行数 = 0 时删除 Excel 列中的单元格

    我试图删除电子表格中某一列中的所有单元格 0 并 召唤 不在该列顶部的值 我目前正在使用 Dim row index As Integer Dim col index As Integer row index 7 col index 16
  • python 中未定义变量

    你好 我对 python 编程很陌生 我正在开始我的第一个程序 但我遇到了一些麻烦 有没有更好的方法来执行下面的代码片段 当我运行该程序时 我得到 yes no 未定义 def main print n Welcome to registr
  • 使用查询选择器从 VBA 中抓取

    我使用了该网站的代码来提取数据site https bazashifer ru proflist profnastil Option Explicit Public Sub GetInfo Dim sResponse As String i
  • `docker run` 输出到 bash 变量 - 奇怪的行为

    我看到一些奇怪的行为从docker run到 bash 变量中 简单的例子 bin bash PWD docker run rm ti ubuntu pwd 2 gt 1 also tried with PWD docker run wit
  • 报告文字颠倒?

    由于特定原因 我需要能够在报告的下半部分颠倒 倒置 显示一些值 这份报告的目的是打印并从中间折叠起来 所以我希望它遵循这种特定的格式 我找不到任何可以轻松做到这一点的东西 我考虑过但不知道如何实施的一些想法 导入 颠倒字体并将控件的字体设置
  • Bash - 在 perl 正则表达式中使用变量以及匹配组

    这是我在 stackoverflow 上的第一篇文章 如果我错过了一些重要的内容 请原谅我 我目前遇到以下问题 目标是根据我准备的文件列表动态替换端口号find 这些文件中的所有端口均以数字 4 开头 有 5 位数字 现在是棘手的部分 我只

随机推荐

  • 正则表达式匹配所有美国电话号码格式

    首先 我想说我在这里看到了很多例子 并用谷歌搜索过 但没有找到符合我正在寻找的匹配前 3 名而不低于中间值的所有条件 请让我知道如何将它们全部放在一处 xxx xxxxxxx xxx xxxxxxx xxx xxx xxxx xxx xxx
  • 如何添加在所有 cron 作业之前运行的 pre-hook 和 post-hook 脚本?

    假设我有以下 cron 条目 bin date 现在假设我想要在 cron 作业运行之前和之后运行的脚本 我可以将 cron 条目修改为如下所示 bin prehook bin date bin posthook 或者 如果我想要 preh
  • 让 paulirish 的 Infinite-Scroll 在 iPhone 上运行

    我一直在我的网站上实施 Paul Irish 的无限滚动 它可以在桌面浏览器上运行 但在移动设备 特别是 iPhone 上却不能立即运行 解决方法是稍微放大 这使得滚动事件触发 从而触发无限滚动 另请参阅此处的问题报告 https gith
  • 生成安全的 cookie 令牌以持久存储

    我正在尝试为我的网站创建登录和注册页面 我希望使用 cookie 来跟踪用户会话 但我正在尝试以最正确 最安全的方式实现它 我尝试查看教程和论坛 但其中大多数都已经过时 并且使用人们评论不安全的技术 我知道令牌需要随机生成和加密 因此我发现
  • 我应该在哪里重新实现 QApplication::notify 函数?

    我应该在哪里重新实现 QApplication notify 函数 我的意思是 哪个班级 我自己的类之一或 Qt 类的子类并在那里执行 我需要这个 因为我在从服务器下载文件时收到以下错误 小文件下载正常 但大文件会导致此消息 Qt 捕获了事
  • 实体框架包含OrderBy随机生成重复数据

    当我从数据库中检索项目列表 包括一些子项目 通过 Include 并随机排序时 EF 给出了一个意外的结果 我创建 克隆了附加项目 为了更好地解释自己 我创建了一个小型且简单的 EF Code First 项目来重现该问题 首先 我将为您提
  • 如何在Python中获取文件的修改日期/时间? [复制]

    这个问题在这里已经有答案了 如何在Python中获取文件的修改日期 时间 os path getmtime filepath or os stat filepath st mtime
  • C# 将 ISO-8859-1 字符转换为实体编号

    我似乎不知道如何将 ISO 8859 1 字符 例如 转换为它的实体编号 233 我希望能够采用字符串 例如 Steel D cor 并将其转换为 Steel D 233 cor 假设您不关心 HTML 中特殊的 HTML 编码字符 例如
  • 来自网络的“添加到日历”的 href 不适用于 Android 6.0+ 上的本机谷歌日历应用程序

    我们有一些 href 链接到 ics 文件和谷歌日历等 一切都在网络和 iOS 设备上完美运行 但是 当在 Chrome 中从 Android 6 0 链接到 添加到日历 时 它会自动打开 Google 日历 这是预期的 但随后它只是显示
  • 今天的日期 JSP

    我发现自己正在处理一些旧的 JSP 并且想做一些简单的事情 例如以 dd mm yyyy 格式显示今天的日期 好像没那么简单 到目前为止我已经导入了 java util 我尝试过各种事情 比如 String df new SimpleDat
  • 我可以安全地删除对 .pdb 文件的引用吗?

    我正在使用 ASP NET Core 5 0 因为它刚刚发布不久 今天我注意到一些奇怪的事情 我为我的软件制作了一个安装程序 它会自动过滤掉进入我的发布版本的每个 pdb 文件 一种永远不会引起问题的机制 但是新的 NET 5 0运行时似乎
  • Sharepoint 工作流首次运行时失败,但手动运行时成功

    我们正在使用一个 infopath 表单 提交后应该会触发自定义 NET 工作流程 基本上 表单中的信息用于创建新的共享点站点 我看到发生的情况是 工作流程第一次运行 提交表单后自动运行 工作流程出错 当我在工作流程失败后立即手动运行该工作
  • c/c++ 如何获取.exe运行进程的基地址?

    我正在寻找一个可以用来获取基地址的方法 函数 program exe 03262C08 gt B4895A0 该地址来自作弊引擎 基地址已通过指针扫描器找到 在指针扫描仪中我可以按show module list并且有地址program e
  • 在 Laravel 5 中创建嵌套的类别列表

    我对 Laravel 相当陌生 正在尝试为我的应用程序创建一个树状类别结构 这是我用过很长时间但仍然无法实现我想要的代码 我的控制器 public function index categories Category with childr
  • 如何在 Mac OSX 上安装 ffmpeg 的 libx265

    我尝试过多种指南here https hexeract wordpress com 2009 04 12 how to compile ffmpegmplayer for macosx 搜索 构建 libx265 和here http si
  • 从我的 war 目录提供图像?

    我有一个 servlet 它提供存储在 blob 中的图像文件 如果找不到请求的图像 我想提供一个包含在我的 war 目录中的静态图像 我们如何做到这一点 这就是我从数据存储区提供 blob 图像的方式 public class Servl
  • Highcharts:使用jspdf导出多个图表

    当我尝试使用导出多个 Highcharts 图表时jsPdf我没有以正确的方式获取图表 你能帮我解决这个问题吗 JavaScript 代码 Highcharts chart container title text Solar Employ
  • 在 Java 中断言异常,如何? [复制]

    这个问题在这里已经有答案了 这可能是一个概念上愚蠢的问题 但也可能不是 因为我仍然是一名学生 我想我应该没有问题问 想象一下 您有一个方法 如果给定某些条件 它将抛出 NumberFormatException 我想编写一个单元测试来查看异
  • 为什么 ++[[]][+[]]+[+[]] 返回字符串“10”?

    这是有效的并返回字符串 10 在 JavaScript 中 更多例子在这里 http sla ckers org forum read php 24 33349 33405 console log 为什么 这里发生了什么 如果我们把它分开
  • Powerpoint VBA - 将 RGB 颜色作为变量传递

    我希望允许用户通过文本框输入 RGB 颜色并传递该变量来更改所有形状的颜色 我编写了一个循环 该循环将查看形状名称的最后 2 个字符 以确定是否应将其更改为主要颜色或次要颜色 这是最新的 Office 365 的 Powerpoint 我已