我在Excel中的vba中有这部分代码来自cliboard的过去值:
<h1>
我有这个问题:Dim WS as Worksheet
Set WS = Sheets.Add
SheetName= "New One"
Sheets("New One").Range("A11").PasteSpecial xlValues
。
如果我将工作表名称更改为error '9' Subscript out of range
这样的技术名称,请运行良好,但我不知道当前正在创建的工作表的技术名称。
我该如何解决这个问题? 事先提出
答案 0 :(得分:4)
更改
SheetName= "New One"
向
WS.Name= "New One"
您的陈述不会更改工作表的名称,只是分配变量。另外,由于您在工作表上有一个引用,即WS
,为什么要再次通过名称调用它,为什么不呢
WS.Range("A11").PasteSpecial xlPasteValues
答案 1 :(得分:0)
这样的工作:
Public Sub TestMe()
Dim WS As Worksheet
Dim SheetName As String
Set WS = Sheets.Add
WS.Name = "New One"
WS.Range("A11") = 45
'Alternative:
Worksheets(WS.Name).Range("A15") = 46
End Sub
稍后请参阅WS
,或使用Worksheets(WS.Name)
。不要使用Sheets
,因为如果您有Charts
,它也会引用String line = "Events|1005435529|7021370073||PAGELOAD|2017-06-19T12:04:40||JI||ServerHostName|ServerIPAddress|9P2_D2jB9Toct7PDTJ7zwLUmWfEYz6Y4akyOKn2g4CepveMH4wr3!46548593!1497854077121|||||||||||";
String[] parts = line.split("(?<=\\|)");
for (String part : parts) {
System.out.println(part);
}
。
答案 2 :(得分:0)
使用此
private void generatePDFFile(FacesContext facesContext, java.io.OutputStream outputStream) {
try {
DCBindingContainer dcBindings = (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();
DCIteratorBinding iterBind1 = (DCIteratorBinding)dcBindings.get("CustomerView1Iterator");
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream(FILE)); \\file path local disk D:\mywork\customer.pdf
document.open();
Row[] rows= iterBind1.getAllRowsInRange();
for(Row row:rows){
custcode = (String) row.getAttribute("CustomerCode");
custname = (String) row.getAttribute("CustomerNameE");
addgroup(document);
}
document.close();
facesContext = facesContext.getCurrentInstance();
ServletContext context = (ServletContext)facesContext.getExternalContext().getContext();
File file = new File(FILE);
FileInputStream fileInputStream;
byte[] b;
System.out.println(file.getCanonicalPath());
System.out.println(file.getAbsolutePath());
fileInputStream = new FileInputStream(file);
int n = fileInputStream.available();
while (n > 0) {
b = new byte[n];
//b = new byte[8192];
int result = fileInputStream.read(b);
outputStream.write(b, 0, b.length);
if (result == -1)
break;
}
outputStream.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
private static void addgroup(Document document) throws DocumentException{
Paragraph preface1 = new Paragraph();
Paragraph preface2 = new Paragraph();
preface1.add(new Chunk("\n"));
preface1.add(new Chunk("Customer : "+custcode+" "+custname,BlueFont));
preface1.add(new Chunk("\n"));
document.add(preface1);
document.add(preface2);
}
答案 3 :(得分:0)
在我看来,你的范围被错误地定义了。
它必须类似于此范围(单元格(x1,y1),单元格(x2,y2))
此外,如果它是运行时构造的工作表,您可能需要使用ThisWorkbook或ActiveSheet引用。
尝试以上述格式更改您的范围并告诉我们。