标签: excel-2010

为什么我的 Excel 工作簿在 Excel 2010 中不可见?

我一直在使用 .xlsx 文件运行 excel 导出功能。有时在加载 excel 文件时,我会使用 System.Runtime.InteropServices.Marshal.BindToMoniker() 方法。当有问题的文件打开但存在时,我得到以下结果:

Excel 将启动,但不会加载工作簿,也不会加载任何工作表。Excel 显示为空白。

在执行导出的程序之外打开文件时,它以完全相同的方式加载。Excel 已打开,它在窗口顶部显示 Microsoft Excel,但没有可见的工作表。Excel 看起来根本没有打开任何东西。

进入选项还表明没有打开的工作簿。该文件肯定有内容,正如我在 Notepad++ 中打开它时所看到的那样,该文件有足够的细节让我看到工作簿中有工作表,但没有显示。

我不确定如何以编程方式防止这种损坏发生,或者如何修复它。任何建议或想法将不胜感激!

为了避免这个问题,我从来没有在关闭的 Excel 文件上使用 BindToMoniker(通过检查文件是否被锁定,如果它被解锁,我只使用 open 函数)

这是我遇到此问题时运行的代码。仅当文件存在且未打开时才会发生:

    Public Function OpenExcelFile( _
    ByRef pobjExcel As Excel.Application, _
    ByRef pwkbWorkBook As Excel.Workbook, _
    ByVal pstrFileName As String) As Boolean 
Run Code Online (Sandbox Code Playgroud)

...

pwkbWorkBook = BindToMoniker(pstrFileName)
            pobjExcel = pwkbWorkBook.Parent
            pobjExcel.Visible = True 'Temp; I use this to see the state of the file
Run Code Online (Sandbox Code Playgroud)

vb.net excel excel-2010

2
推荐指数
1
解决办法
1万
查看次数

格式条件和内部颜色

我有一个旧的宏,它在 Excel 2003 上运行良好,但在 Excel 2010 上产生了问题。导致问题的部分是:

If Not IsNull(someRange.FormatConditions(parActiveCondition).Interior.Color) Then
    locVisibleColor = someRange.FormatConditions(parActiveCondition).Interior.Color
End if
Run Code Online (Sandbox Code Playgroud)

parActiveCondition的活动条件格式编号在哪里someRange

当背景选择为“无颜色”时,someRange.FormatConditions(parActiveCondition).Interior.Color返回

  • Null 在 Excel 2003 中
  • 0 在 Excel 2010 中

问题是黑色背景也返回 0。所以在 Excel 2010 中似乎不再可能区分黑色背景和无背景颜色。

有人知道解决方法吗?

ps:我显然可以选择白色背景而不是“无颜色”,但我不想更改所有电子表格和条件格式规则。

excel vba excel-2003 excel-2010

2
推荐指数
1
解决办法
6425
查看次数

Excel的大小突然变得非常大

我的Excel文件(包含宏)只有4 MB的大小突然变成了12MB的文件...我只对vba代码做了一些小改动,我不认为这就是这个的原因....还有什么可能是这个原因?有关如何修复的建议吗?

excel vba excel-vba excel-2010

2
推荐指数
1
解决办法
2万
查看次数

VBA:更新后无法自动重新计算Excel公式 - 需要手动交互

在VBA中,我正在更新单元格中的公式(工作正常),但自动重新计算不起作用:

updated_formula = "=COUNT(Sheet1!A3:A" & nr_points & ")"
Cells(x, y).Formula = updated_formula
ActiveWorkbook.Save
Cells(x, y).Calculate
Run Code Online (Sandbox Code Playgroud)

该公式只计算另一个工作表中现有行的数量.当我运行宏时,函数文本字段中的单元格值是正确的,但在单元格本身中我有"#NAME?",我需要按下ENTER函数重新计算公式.

我期待过多的Excel吗?或者我做错了什么?

编辑:情况的屏幕截图 - 这是我在运行宏后看到的.(对不起黑色审查,必须与客户公司保持一致)

在此输入图像描述

excel vba excel-vba excel-2010

2
推荐指数
1
解决办法
9489
查看次数

隐藏后如何返回或重新显示用户表单?

我在 UserForm2 的一个命令按钮中有此代码:

 Private Sub CButton1_Click()
     UserForm1.Show
     Me.Hide
 End Sub
Run Code Online (Sandbox Code Playgroud)

现在,Userform1显示。
然后我在 Userform1 的一个命令按钮中有另一个代码:

 Private Sub CButton2_Click()
     UserForm2.Show
     Unload Me
 End Sub
Run Code Online (Sandbox Code Playgroud)

这会抛出一个:

运行时错误:表单已显示;不能模态显示

我该如何正确执行此操作?隐藏或卸载后
如何返回上一个Userform

excel vba excel-2010

2
推荐指数
1
解决办法
1万
查看次数

带公式的Excel 2010 VBA错误1004

我有这个代码:

Dim fStrecke As String
fStrecke = "=A" & z & "*B" & z & "*C" & z
wks.Cells(z, "L").Formula = fStrecke

Dim fZeit As String
fZeit = "=IF(ISBLANK(H" & z & ");((A" & z & "*B" & z & "*I" & z & ")-I" & z & ")+(A" & z & "*B" & z & "*J" & z & ");(A" & z & "*B" & z & "*H" & z & "))"
wks.Cells(z, "K").Formula = fZeit
Run Code Online (Sandbox Code Playgroud)

第一个公式是工作,第二个公式我得到一个运行时错误1004.任何想法?我已将列K格式化为用户定义的"m:ss".

excel vba excel-vba excel-formula excel-2010

2
推荐指数
1
解决办法
9804
查看次数

基于单元格颜色的条件格式

我有一个条件格式规则的列设置为根据日期与当前日期(今天的日期+ 7,+ 15,+ 30天)的接近程度使背景成为三种颜色之一.

我想扩展条件格式以影响整行,而不仅仅是用户的单个单元格更容易看到哪个项目的日期即将到来.

是否可以使用单元格格式进行条件格式化?

更新:进一步解释.条件格式设置为一列:如果单元格值介于今天的日期和今天的7天之间,则格式化为绿色背景.我希望这种格式在ROW中延伸,其中值变为绿色.

excel datetime conditional-formatting excel-formula excel-2010

2
推荐指数
1
解决办法
4万
查看次数

Application.Calculation取决于工作簿

我正在管理一个包含超过 200 000 个公式(一些非常复杂的数组公式)的工作簿,这意味着我不能让 Excel 每次单击某个地方时自动计算所有单元格(计算所有内容大约需要 8 小时)。

取而代之的是,计算设置为手动,并且在打开Calculation.xlsm时执行了以下 VBA 代码:

With Application
    .CalculateBeforeSave = False
    .Calculation = xlCalculationManual
End With
Run Code Online (Sandbox Code Playgroud)

我使用自定义按钮在需要时仅计算 200k 单元格的某些部分。

我注意到 Excel 会跟踪每个工作簿中的设置,这意味着如果我打开我的 Calculation.xlsm,Excel 会记住计算设置为手动。如果我打开 Values.xlsx,Excel 会记住计算设置为自动。这是在我尝试将值从Calculation.xlsm复制到Values.xlsx 之前

现在,因为我在 Calculation.xlsm 中使用 VBA 将值复制到 Values.xlsx,ExcelApplication.Calculation也会将该设置应用于该工作簿,这意味着如果我使用新的 Excel 实例打开它,计算仍将被设置手动。

如果我在我的Calculation.xlsm工作簿使用 VBAApplication.Calculation = xlCalculationAutomatic关闭Values.xlsx之前添加一个,它将起作用,但 Excel 也将开始计算我的Calculation.xlsm工作簿中的 200k 单元格,这显然是我不想要的。

所以我的问题是关于如何根据特定的工作簿而不是Application对象来实际设置 Excel 的计算。这是基于这样一个事实,即 Excel 会根据打开的工作簿跟踪该设置(您只需进行测试并创建 2 个不同的.xlsx文件,一个启用计算,另一个禁用计算,Excel 将记住这些设置)。

我知道我可以Worksheets.Range.Calculate …

excel vba excel-2010

2
推荐指数
1
解决办法
4021
查看次数

计算每日总金额的公式

我有这个Excel电子表格,在其中一个列中我需要提出一个公式来计算给定日期的总金额.这是一个巨大的电子表格的小快照:

Date/Time   Time    Amount      Balance       Total $ per day
9/30/2014   5:30 PM $5.20       $87.81  
9/30/2014   4:23 PM $0.14       $93.01  
9/30/2014   8:53 AM ($4.61)    $93.15   
9/30/2014   7:53 AM $5.20       $88.54  
9/29/2014   5:08 PM $1.09       $93.74  
9/29/2014   7:18 AM $1.09       $94.83  
9/26/2014   5:31 PM ($4.61)     $95.92  
Run Code Online (Sandbox Code Playgroud)

对于这个例子,Total $ per day将是:

E2 $5.93 
E6 $2.18 
E8 ($4.61)
Run Code Online (Sandbox Code Playgroud)

我猜有一个公式比手动计算更好=SUM(X#:X#)吗?

excel if-statement pivot-table excel-formula excel-2010

2
推荐指数
2
解决办法
2万
查看次数

如何将单个单元格拆分为多行并添加另一行

我有一个有两列的表.日期和测试名称.我想要发生的是,一个单元格中的文本字符串被分成多行.另外,我需要将日期与每组文本相关联.我已经尝试了文本到列然后转置,但它一次只能处理1组字符串而不是整个数据集.

在此输入图像描述

excel vba excel-2007 excel-vba excel-formula excel-2010

2
推荐指数
1
解决办法
3万
查看次数