我在excel宏中使用这段代码强制更新大量重叠图表:
Set sht = ActiveSheet
For Each co In sht.ChartObjects
co.Activate
For Each sc In ActiveChart.SeriesCollection
sc.Select
temp = sc.Formula
MsgBox temp
sc.Formula = "=SERIES(,,1,1)"
sc.Formula = temp
Next sc
Next co
代码很好但是在一个包含5个元素(而不是4个)系列的图表上,我在这一行上出错:
sc.Formula = "=SERIES(,,1,1)"
您能否建议我如何修改代码以使其适用于我的所有图表?
答案 0 :(得分:1)
好的,我已经用这段代码解决了:
import javafx.beans.property.IntegerProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.collections.FXCollections;
import javafx.collections.ListChangeListener;
import javafx.collections.ObservableList;
public class ConcatObservabeList {
public static void main(String[] args) {
ObservableList<IntegerProperty> list1 = FXCollections.observableArrayList();
IntegerProperty ip = new SimpleIntegerProperty(0);
ip.addListener(System.out::println);
list1.add(ip);
ObservableList<IntegerProperty> list2 = FXCollections.observableArrayList();
ObservableList<IntegerProperty> concat = FXCollections.concat(list1, list2);
concat.get(0).setValue(42);
concat.addListener(new ListChangeListener<IntegerProperty>() {
@Override
public void onChanged(ListChangeListener.Change<? extends IntegerProperty> c) {
System.out.println("concat changed " + c);
}
});
concat.add(new SimpleIntegerProperty(Integer.MAX_VALUE));
}
}
答案 1 :(得分:0)
= SERIES(,, 1,1)中有4个值,因为它是一系列4个元素。
如果有5个元素(或更多或更少),您必须计算这些元素。
我不知道 ActiveChart.SeriesCollection.Count 是否会计算系列集合的元素。
Dim tmpText As String
tmpText = ""
For i = 3 To ActiveChart.SeriesCollection.Count
tmpText = tmpText & ",1"
Next i
sc.Formula = "=SERIES(," & tmpText & ")"
我从 3 开始,因为 = SERIES(,, 1,1)中的前2个值为空。
结果将是 ActiveChart.SeriesCollection.Count 5 :
sc.Formula =&#34; = SERIES(,, 1,1,1)&#34;
如果少于3个元素,必须在for循环中设置 i = 1 。
你应该自己尝试一下。 :)
修改强>