小编eir*_*ude的帖子

VBA中"end"和"exit sub"之间有什么区别?

在VBA中,有时我们想在某些条件成立后退出程序.但我使用endexit sub

excel vba excel-vba

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

Excel:替换单元格的字符串值的一部分

我有一个大型电子表格,其中包含一个名为"角色"的列.在此列中的值如下:

ROLES
Author
Author;
Publishing; Author;
Something Else; Author; Publishing
Run Code Online (Sandbox Code Playgroud)

还有其他列可能存在"作者"一词.

我需要做的是仅在我的"角色"列中查找"作者",并将其替换为"创作",而不会在其之前或之后丢失任何内容.即最终结果应该是......

ROLES
Authoring
Authoring;
Publishing; Authoring;
Something Else; Authoring; Publishing
Run Code Online (Sandbox Code Playgroud)

我尝试了FIND和REPLACE函数,但是它取代了整个单元格值,而不仅仅是它的一部分.

= IF(FIND( "作者",[@角色],1),REPLACE( "作者",1,6, "创作"))

有人可以帮忙吗?我宁愿不是我们的VB解决方案,因为我不熟悉如何做到这一点,所以希望有一个基于公式的方式?

干杯

excel

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

plotly.offline.iplot给出一个大的空白字段作为其输出 - 为什么?

我正在尝试在Jupyter笔记本中创建一个Sankey图表,我的代码基于此处显示的第一个示例.

我最终得到了这个,我可以运行而不会出现任何错误:

import numpy as npy
import pandas as pd
import plotly as ply

ply.offline.init_notebook_mode(connected=True)

df = pd.read_csv('C:\\Users\\a245401\\Desktop\\Test.csv',sep=';')

print(df.head())
print(ply.__version__)

data_trace = dict(
    type='sankey',
    domain = dict(
      x =  [0,1],
      y =  [0,1]
    ),
    orientation = "h",
    valueformat = ".0f",
    node = dict(
      pad = 10,
      thickness = 30,
      line = dict(
        color = "black",
        width = 0.5
      ),
      label =  df['Node, Label'].dropna(axis=0, how='any'),
      color = df['Color']
    ),
    link = dict(
      source = df['Source'].dropna(axis=0, how='any'),
      target = df['Target'].dropna(axis=0, …
Run Code Online (Sandbox Code Playgroud)

python plotly jupyter jupyter-notebook jupyter-lab

16
推荐指数
3
解决办法
5324
查看次数

vbNullString和""之间有什么区别吗?

在VBA中,如果我比较字符串或类似字符串vbNullString而不是空字符串,它会有什么不同; ""?如果是这样,两者之间有什么不同?

vba

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

如何在一个范围内获得单元格的位置?

我如何获得一个范围内的细胞的相对位置?使用Row- 和Column- 属性查找工作表中单元格的位置是微不足道的,但我不确定如何在一个范围内执行相同操作.

我考虑使用我想要找到单元格位置的左上角单元格的位置,然后从工作表中单元格的位置中扣除它(-1),但是它有点麻烦.有更优雅的方式来解决这个问题吗?

到目前为止,我最好的尝试,包括测试,是这样的:

Option Explicit

Sub test()
  Dim r As Range: Set r = Sheet1.Range("B2:E10")
  Dim c As Range: Set c = Sheet1.Range("C2")

  Debug.Print "Column in sheet: " & c.Column
  Debug.Print "Row in sheet: " & c.Row
  Debug.Print "Column in range: " & column_in_range(r, c)
  Debug.Print "Row in range: " & row_in_range(r, c)
End Sub

Function column_in_range(r As Range, c As Range) As Long
  column_in_range = c.Column - (r.Cells(1, 1).Column - 1)
End Function …
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

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

如何引用具有相同名称但在不同工作表上的图表?

我有两个包含图表的工作表,并使用宏来运行包含图表的所有工作表并更新图表中的值.

但是,在尝试在第一个工作表之后引用工作表中的图表时遇到问题 - 尽管工作表的引用发生了更改,但对图表的引用却没有.

循环看起来像这样:

For Each ws In ThisWorkbook.Worksheets
  Debug.Print ws.Name
  Debug.Print ws.ChartObjects("Kortsone").Chart.Name
  With ws.ChartObjects("Kortsone").Chart
    ...
  End With
Next ws
Run Code Online (Sandbox Code Playgroud)

我到达即时窗口的输出如下:

Grafar ovn 3
Grafar ovn 3 Kortsone
Grafar ovn 4
Grafar ovn 3 Kortsone
Run Code Online (Sandbox Code Playgroud)

正如您所看到的对工作表的引用更改,但图表引用没有.

有没有办法解决这个问题,还是我必须用独特的名称重命名我的所有图表?

我正在使用Excel 2013

- 编辑 -我现在已根据评论中的建议进行了一些测试,看来打印到即时窗口的内容取决于当前活动工作表的内容.

尝试使用for each chartobject遇到了与我之前相同的问题:

Sub test2()
  Dim ws As Worksheet
  Dim ch As ChartObject

  For Each ws In ThisWorkbook.Worksheets
    For Each ch In ws.ChartObjects
      If ws.CodeName = "Graf4" Then
      Debug.Print ws.Name
      Debug.Print ch.Name
      Debug.Print ch.Chart.Name …
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

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

如何免费编写,编译和运行C#(在Windows中)

可以免费使用C#吗?你会用哪些工具?

  1. 为了好玩/学习:我很确定你可以,但仍然存在工具问题.
  2. 对于您想要出售的节目?

我正在寻找的工具:

  1. IDE(尽可能完整:调试,重构,库,IntelliSense等) - 如果它不包含在IDE中,则编译器.
  2. 单元测试,
  3. 记录(使用JavaDoc提取注释),
  4. 部署.

其他有关免费工具的建议也欢迎.

请注意,IMO,Visual Studio Express不提供所有这些工具.

c# ide deployment

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

为什么我的表格仍在记忆中

我有以下代码打开一个表单,然后做一些事情.

Sub lag_ny_a3()
    Dim frm As ufNyA3

    Set frm = New ufNyA3
    frm.Show

    If Not frm Is Nothing Then
        MsgBox("Doing stuff")
        Unload frm
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)

然后我在表单中有以下代码

Private Sub cmdAvbryt_Click()
    Unload Me
End Sub
Run Code Online (Sandbox Code Playgroud)

但是,即使在表单中单击了cmdAvbryt按钮,第一个代码片段也会输入if语句,就好像表单没有被卸载一样.为什么会这样,如果按下cmdAvbryt按钮,如何防止if语句中的代码被执行?

forms excel vba excel-vba excel-2016

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

有没有办法将标注标签添加到图表中的某个点,而不使用select?

有没有办法将标注标签添加到图表中的某个点,而不使用Select

录制宏,我得到了这个:

Sub Macro9()
    ActiveSheet.ChartObjects("SPC").Activate
    ActiveChart.FullSeriesCollection(1).Select
    ActiveChart.FullSeriesCollection(1).Points(4).Select
    ActiveChart.SetElement (msoElementDataLabelCallout)
End Sub
Run Code Online (Sandbox Code Playgroud)

但我宁愿避免使用Select.我尝试SetElement在点上使用-method,但失败了.使用HasDataLabel = True-method只需添加一个数据标签.

是否有任何解决方法来选择点然后SetElement在图表上使用,或者我是否必须满足于类似上述宏的东西?

excel charts vba excel-vba

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

在图表中定位标签

我有一个包含两个图表的电子表格,我想根据表格中的值在其中一个系列的点旁边添加一些文本框.

我为此创建了两个程序,每个程序都有自己的优点和缺点:

Sub add_comments(apply_to As Series, source_range As Range) 
  Dim i As Long 
  Dim c As Range 

  If source_range.Count > apply_to.Points.Count Then 
    Set source_range = source_range.Resize(apply_to.Points.Count, 1) 
  End If 

  i = 1 
  For Each c In source_range 
    If Not IsError(c) And i <= apply_to.Points.Count Then 
      If Len(c.Text) <> 0 Then 
        apply_to.Points(i).HasDataLabel = True 
        apply_to.Points(i).DataLabel.Text = c.Value2 
        apply_to.Points(i).DataLabel.Format.AutoShapeType = msoShapeRectangularCallout 
        With apply_to.Points(i).DataLabel.Format.Line 
          .Visible = msoTrue 
          .ForeColor.RGB = RGB(0, 0, 0) 
        End With 
        apply_to.Points(i).DataLabel.Position = xlLabelPositionAbove 
      Else 
        If apply_to.Points(i).HasDataLabel Then 
          apply_to.Points(i).DataLabel.Delete 
        End …
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba excel-2016

5
推荐指数
1
解决办法
432
查看次数

调整包含图表标题的文本框的大小

我有一堆图表,其中图表标题适合标题框中的一行。

在此输入图像描述

我不想进一步减小字体大小,而是更愿意使文本框更宽一些。

将图表标题的当前宽度打印到即时窗口,我发现它当前的宽度约为 245 像素。看到这一点,我决定使用以下代码来尝试调整工作表中给定名称的所有图表的大小:

Dim ws As Worksheet
Dim co As ChartObject

For Each ws In ThisWorkbook.Worksheets
    For Each co In ws.ChartObjects
        If co.Name = "Tiltaksplan" Then
            co.Chart.ChartTitle.Width = 260
        End If
    Next co
Next ws
Run Code Online (Sandbox Code Playgroud)

然而,它似乎.ChartTitle.Width是一个只读属性,因此当我尝试更改它时,宏会停止并出现该行错误。

还有其他方法可以调整标题框的大小,还是我只能手动操作?

excel charts vba excel-2016

5
推荐指数
1
解决办法
2447
查看次数

为什么我的函数假定缺少参数?

我有一个更新表单"LoadingInterface"的函数.该函数如下所示:

Private Sub updateLoadingBar(Optional tekst As String, Optional barOnePerc As Long, Optional barTwoPerc As Long)
    If Not IsMissing(tekst) Then
        LoadingInterface.Label1.Caption = tekst
    End If
    If Not IsMissing(barOnePerc) Then
        LoadingInterface.Bar.Width = barOnePerc * 1.68
        LoadingInterface.prosent.Caption = barOnePerc & "%"
        LoadingInterface.prosent.Left = barOnePerc * 1.68 / 2 - 6
    End If
    If Not IsMissing(barTwoPerc) Then
        LoadingInterface.SubBar.Width = barTwoPerc * 1.68
    End If
    LoadingInterface.Repaint
End Sub
Run Code Online (Sandbox Code Playgroud)

然后我调用这样的函数,期望它只更新文本字段,因为缺少其他两个参数.

Call updateLoadingBar(tekst:="Test")
Run Code Online (Sandbox Code Playgroud)

这适用于更新Label1,但不幸的是其他两个值也被更新 - 似乎不包括函数调用中的任何值使得VBA假设两个变量值为0.而且,似乎IsMissing函数没有检测到调用函数时两个值都缺失,这是一个更大的问题.使用F8逐步执行代码确认确实输入了所有if语句.

有没有什么办法让代码跳过我的函数两个最下面的if语句,如果提供的参数没有值barOnePercbarTwoPerc

forms excel vba excel-vba excel-2016

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

更改工作日返回值的语言

我正在使用weekdayname-function将一些工作日打印到电子表格中.这很好,除了工作日是用当地语言(挪威语)写的,而不是我想要的英语.有没有办法指定函数返回其结果的语言,或者我是不是自己制作了自己的UDF?

excel vba excel-vba

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