VBA没有找到我的工作表名称

时间:2017-06-19 09:37:40

标签: excel vba

我在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这样的技术名称,请运行良好,但我不知道当前正在创建的工作表的技术名称。

我该如何解决这个问题? 事先提出

4 个答案:

答案 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引用。

尝试以上述格式更改您的范围并告诉我们。