小编Vit*_*ata的帖子

为什么0除以0会在VBA中抛出溢出错误?

为什么要0/0投入Overflow errorVBA,而在.Net语言中它只是一个Division by 0错误?


例如,C#它是一个System.DivideByZeroException

static void Main()
{
    int k = 0;
    int p = 0;
    Console.WriteLine(k/p);
}
Run Code Online (Sandbox Code Playgroud)

Div/0错误存在于VBA.但是 0/0给出了溢出异常,而其他除以0的Div/0异常给出了异常:

Public Sub TestMe()

    'Integer
    PrintAndCheck (11)      '- Division by zero error

    'Double
    PrintAndCheck (0.9)     '- Division by zero error

    'Long
    PrintAndCheck (50000)   '- Division by zero error

    'String
    PrintAndCheck ("1.1")   '- Division by zero error

    '----------------------------------------------------
    '----------------BUT---------------------------------
    '----------------------------------------------------

    'Integer
    PrintAndCheck (0) …
Run Code Online (Sandbox Code Playgroud)

excel vba runtime-error excel-vba

11
推荐指数
1
解决办法
2262
查看次数

VBA自动隐藏功能在Excel 2013中

如何Auto-hide Ribbon在Excel 2013中的VBA?我想通过点击下面图片中标有蓝色的Excel菜单右上角的上箭头图标,然后点击标有橙色的第一个选项,来获得我所得到的结果:

在此输入图像描述

我也有兴趣将VBA切换回第三种选择Show Tabs and Commands.对我来说重要的是在Excel菜单中保留上箭头图标(标有蓝色).

我尝试过这个帖子中显示的提示:VBA最小化Excel中的功能区 但我对结果不满意.

尝试1

Application.ExecuteExcel4Macro "Show.ToolBar(""Ribbon"",False)
Run Code Online (Sandbox Code Playgroud)

这很好,但隐藏了蓝色图标.

尝试2

CommandBars.ExecuteMso "MinimizeRibbon"
Run Code Online (Sandbox Code Playgroud)

这接近我想要的.这会保留蓝色图标,但不会隐藏整个菜单.它切换到图片中显示的第二个选项Show Tabs.

尝试3

SendKeys "^{F1}"
Run Code Online (Sandbox Code Playgroud)

豁免根本不起作用.此外,它应该模仿尝试2.所以即便这样也不会让我满意.

excel vba excel-vba

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

VBA中自定义COM类中的IntelliSense

有没有办法在VBA中自己构建的COM类中获取IntelliSense?

例如,在下面的示例中,每当我按下点(或ctrl + space for shortcut)时,我想显示"Number": 在此输入图像描述

我想,如果以某种方式解决了这个问题,我还会得到一些关于对象公共函数的信息:

在此输入图像描述

那么,有什么建议?

建议1:

在此输入图像描述

c# com intellisense vba visual-studio

9
推荐指数
1
解决办法
854
查看次数

VBA - 冒号`:`如何在有条件的VBA代码中工作

冒号运算符:是VBA中的语句分隔符.

但是,是否有人知道为什么前三个例子有效,第四个(未注释时)产生错误?

Option Explicit

Public Sub TestMe()

    If 1 = 1 Then: Debug.Print 1

    If 2 = 2 Then Debug.Print 2

    If 3 = 3 Then:
        Debug.Print 3

'   Gives error:
'    If 4 = 4 Then
'        Debug.Print 4

'Other Examples, from the comments and the answers:

::::::::::::::::::::::::::::         '<-- This seems to be ok

    If 5 = 5 Then Debug.Print "5a"::: Debug.Print "5b"
    If 6 = 0 Then Debug.Print "6a"::: Debug.Print "6b"

    If 7 = 0 Then: …
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

9
推荐指数
1
解决办法
2325
查看次数

Jupyter Notebook Ctrl+Shift+-(分割单元格)不起作用

Ctrl+ Shift+-应该从光标所在位置分割单元格,但它只是缩小窗口。

split zooming jupyter jupyter-notebook

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

在Excel 2016中,VBA处理日期有所不同?有没有关于此的文件?

似乎VBA已经在Excel 2016/2013中进行了更改,只要它开始在地方抛出错误,它就不会抛出Excel 2010.

以下代码执行以下操作:

  • 在ActiveSheet的第一行创建17个日期;
  • 填充日期数组,有4个值
    • 第一行中的一个
    • 一个不在第一行
    • 1913年的一个
    • 1904年之前的一个
  • 如果找到它,它会查找每个值并将单元格设置为红色;

在Excel 2010中,它运行顺畅,找到一个值而不是按预期找到其他3.一切都好.

在Excel 2016/2013中,它对1904之前的值不满意并抛出错误

无效的过程调用或参数(错误5)

在...上Set foundRange = Rows(1).Find(someDates(cnt)).

因此,似乎在Excel 2016/2013的Date1904规则下,有一种类型的检查04.01.1900是在年之前进行的1904,因此它无法解析为Excel日期系统中的日期?在Excel 2010中,情况并非如此.

所以问题 - 这个特征/行为是否记录在案?

Public Sub TestMe()

    ThisWorkbook.Date1904 = True
    Cells.Clear                                          'clearing up all.
    Dim cnt     As Long

    For cnt = 3 To 20
        Cells(1, cnt) = DateAdd("M", cnt, DateSerial(2016, 1, 1))
        Cells(1, cnt).NumberFormat = "MMM-YY"
    Next cnt

    Dim someDates(3)    As Date
    someDates(0) = DateSerial(2016, 1, 1)               'exists
    someDates(1) = …
Run Code Online (Sandbox Code Playgroud)

excel vba date version excel-vba

8
推荐指数
1
解决办法
701
查看次数

如何用 Python cartopy 给一个国家贴上标签?

使用 python3 和 cartopy,有这个代码:

import matplotlib.pyplot as plt
import cartopy
import cartopy.io.shapereader as shpreader
import cartopy.crs as ccrs

ax = plt.axes(projection=ccrs.PlateCarree())
ax.add_feature(cartopy.feature.LAND)
ax.add_feature(cartopy.feature.OCEAN)
ax.add_feature(cartopy.feature.COASTLINE)
ax.add_feature(cartopy.feature.BORDERS, linestyle='-', alpha=.5)
ax.add_feature(cartopy.feature.LAKES, alpha=0.95)
ax.add_feature(cartopy.feature.RIVERS)

ax.set_extent([-150, 60, -25, 60])

shpfilename = shpreader.natural_earth(resolution='110m',
                                      category='cultural',
                                      name='admin_0_countries')

reader = shpreader.Reader(shpfilename)
countries = reader.records()

for country in countries:
    if country.attributes['SOVEREIGNT'] == "Bulgaria":
        ax.add_geometries(country.geometry, ccrs.PlateCarree(), facecolor=(0, 1, 0), label = "A")
    else:
        ax.add_geometries(country.geometry, ccrs.PlateCarree(), facecolor=(1, 1, 1), label = country.attributes['SOVEREIGNT'])
plt.rcParams["figure.figsize"] = (50,50)
plt.show()
Run Code Online (Sandbox Code Playgroud)

我明白了:

在此处输入图片说明

问题: 我应该写什么,以便在保加利亚(或我在 中提到的任何其他国家/地区)上空得到一个红色的“ A ” …

python numpy dataframe pandas cartopy

8
推荐指数
1
解决办法
1868
查看次数

Excel VBA公式德语/法语/意大利语/俄语/荷兰语/外语功能

当我将数据添加到我的工作簿时,将公式从较早的单元格复制到新单元格是必要的.

我使用以下公式计算我的增长率:

=WENN(ODER(K9="";L9="");"";WENNFEHLER((L9-K9)/K9;""))
Run Code Online (Sandbox Code Playgroud)

由于这非常耗时,我想用宏来改进它,并因此编写了以下代码:

Sub Growth()

Tabelle3.Range("O9").Formula = "=WENN(ODER(K9="";L9="");"";WENNFEHLER((L9-K9)/K9;""))"

Tabelle3.Range("O9:O14").FillDown


End Sub
Run Code Online (Sandbox Code Playgroud)

但是,当我想运行代码"运行时错误'1004':应用程序定义或对象定义错误"时,此行会出现:

Tabelle3.Range("O9").Formula = "=WENN(ODER(K9="";L9="");"";WENNFEHLER((L9-K9)/K9;""))"
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么会出现这个错误以及如何解决它?

excel vba excel-vba excel-formula

7
推荐指数
1
解决办法
554
查看次数

VBA将日期转换为周数

在VBA中,我想将日期03/11/2017(DD/MM/YYYY)转换为该日期的周数.

到目前为止,我有以下代码:

   'geting the date out of the string
    HeadlineTemp = Mid(VRHeadline, InStr(VRHeadline, "[") + 1, 10)
   'switch "." to "/"
    HeadlineTemp = Replace(HeadlineTemp, ".", "/")
   'convert to a date
    FristVRFirstKW = CDate(HeadlineTemp)
Run Code Online (Sandbox Code Playgroud)

现在,我需要一个函数将该日期转换为年份的周数.第一周是星期一.

excel vba date excel-vba

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

循环遍历列,将值存储在数组中

我试图找到一种方法:

  1. 循环遍历一列(B 列)
  2. 取值,将它们存储在一个数组中
  3. 循环遍历该数组并进行一些文本操作

但是,我想不出一种方法来遍历一列并获取这些值,并将它们存储在一个数组中。我已经浏览了 Stack Overflow 和谷歌,但没有找到成功的解决方案。

在此先感谢您的帮助。

Sub collectNums()

Dim eNumStorage() As String ' initial storage array to take values
Dim i as Integer
Dim j as Integer
Dim lrow As Integer

lrow = Cells(Rows.Count, "B").End(xlUp).Row ' The amount of stuff in the column

For i = lrow To 2 Step -1
    If (Not IsEmpty(Cells(i, 2).Value)) Then ' checks to make sure the value isn't empty
    i = eNumStorage ' I know this isn't right
Next i …
Run Code Online (Sandbox Code Playgroud)

excel vba

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