为什么要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) 如何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.所以即便这样也不会让我满意.
冒号运算符:是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) Ctrl+ Shift+-应该从光标所在位置分割单元格,但它只是缩小窗口。
似乎VBA已经在Excel 2016/2013中进行了更改,只要它开始在地方抛出错误,它就不会抛出Excel 2010.
以下代码执行以下操作:
在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) 使用 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 ” …
当我将数据添加到我的工作簿时,将公式从较早的单元格复制到新单元格是必要的.
我使用以下公式计算我的增长率:
=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)
有谁知道为什么会出现这个错误以及如何解决它?
在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)
现在,我需要一个函数将该日期转换为年份的周数.第一周是星期一.
我试图找到一种方法:
但是,我想不出一种方法来遍历一列并获取这些值,并将它们存储在一个数组中。我已经浏览了 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)