ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: VBA万岁

[求助] VSTO入门问题集

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-21 15:16 | 显示全部楼层
excelhomesnake 发表于 2016-1-21 12:48
你所说的vba的InputBox函数,实际是钩住excel的事件来得到所选区域..net中是很容易做到的.这是与委托相关 ...

你是说调用VB里的InputBox吗?

TA的精华主题

TA的得分主题

发表于 2016-1-21 15:23 | 显示全部楼层
本帖最后由 excelhomesnake 于 2016-1-21 15:26 编辑
VBA万岁 发表于 2016-1-21 15:16
你是说调用VB里的InputBox吗?

inputbox.png
不是,excel宿主一样有inputbox方法的.上图的第一个红框.

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-21 17:17 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 VBA万岁 于 2016-1-21 17:30 编辑
excelhomesnake 发表于 2016-1-21 15:23
不是,excel宿主一样有inputbox方法的.上图的第一个红框.


这个截图所显示的内容是VSTO项目吗?在哪里啊?VSTO2010的“Excel2010 Add-in”项目中有inputbox方法吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-21 17:20 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2016-1-21 18:52 | 显示全部楼层
VBA万岁 发表于 2016-1-21 17:17
这个截图所显示的内容是VSTO项目吗?在哪里啊?VSTO2010的“Excel2010 Add-in”项目中有inputbox方法吗 ...

是vsto的项目.add in项目是一样可以通过global来获取add in所在的application宿主的.

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-22 08:54 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
excelhomesnake 发表于 2016-1-21 18:52
是vsto的项目.add in项目是一样可以通过global来获取add in所在的application宿主的.

有空我测试看看。

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-22 22:13 | 显示全部楼层
VBA万岁 发表于 2016-1-22 08:54
有空我测试看看。

测试成功,主要代码如下:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;

  9. using System.Text.RegularExpressions;//用于button1_Click的代码引用正则Regex.Split

  10. namespace ExcelHelpTaskPane
  11. {
  12.     public partial class Form6 : Form
  13.     {
  14.         public Form6()
  15.         {
  16.             InitializeComponent();
  17.         }

  18.         private void button1_Click(object sender, EventArgs e)
  19.         {
  20.             Microsoft.Office.Interop.Excel.Range cel = Globals.ThisAddIn.Application.ActiveCell;
  21.             try
  22.             {
  23.                 //string s = Globals.ThisAddIn.Application.InputBox("", Type: 8);
  24.                 string s = Globals.ThisAddIn.Application.InputBox("", "", "<a、<b、<div、...<table...");
  25.                 String s2 = "";
  26.                 if (s != null)
  27.                 {
  28.                     s2 = s.Replace("<", "</");
  29.                 }
  30.                 else
  31.                 {
  32.                     s2 = "<body";
  33.                     s = "<body";
  34.                 }
  35.                 int r = 0;
  36.                 foreach (var t in Regex.Split(cel.Text, "    "))
  37.                 {
  38.                     r = r + 1;
  39.                     cel.Cells[r, 1].Value = Regex.Split(t, s)[0];
  40.                     int r2 = 0;
  41.                     foreach (var t2 in Regex.Split(t, s))
  42.                     {
  43.                         r2 = r2 + 1;
  44.                         if (r2 > 1)
  45.                         {
  46.                             r = r + 1;
  47.                             cel.Cells[r, 1].Value = s + Regex.Split(t2, s2)[0];
  48.                             int r3 = 0;
  49.                             foreach (var t3 in Regex.Split(t2, s2))
  50.                             {
  51.                                 r3 = r3 + 1;
  52.                                 if (r3 > 1)
  53.                                 {
  54.                                     r = r + 1;
  55.                                     cel.Cells[r, 1].Value = s2 + t3;
  56.                                 }
  57.                             }
  58.                         }
  59.                     }
  60.                 }
  61.             }
  62.             catch (Exception exception)
  63.             {
  64.                 MessageBox.Show(exception.Message);
  65.             }
  66.         }
  67.     }
  68. }
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-23 13:02 | 显示全部楼层
VBA万岁 发表于 2016-1-22 22:13
测试成功,主要代码如下:

应用InputBox函数引用单元格区域的实例见如下帖子的8~9楼:
C#汉字转拼音

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-23 13:13 | 显示全部楼层
VBA万岁 发表于 2016-1-23 13:02
应用InputBox函数引用单元格区域的实例见如下帖子的8~9楼:
C#汉字转拼音

测试制作源码如附件:

ExcelHelpTaskPane.rar

743.08 KB, 下载次数: 82

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-23 23:07 , Processed in 0.043406 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表