重命名Excel工作表会产生错误

时间:2019-04-05 16:17:30

标签: excel vba

我正在尝试使用VBA将Excel工作表重命名为该工作表中单元格的内容。

我创建了一个名为Rename_Sheets的单独模块,在线上的各种帖子都建议使用以下代码:

Sheets(3).Name = Sheet3.Range("A5")

或其非常相似的变体。

使用debug.print,以上代码的两部分都返回预期的结果,即工作表名称和单元格文本。 当我运行引用的代码时,收到消息“应用程序定义的错误或对象定义的错误”。 我不明白为什么会收到错误消息。

2 个答案:

答案 0 :(得分:0)

你有错字

替换

public class Main extends Application {

    private Stage stage;

    @Override
    public void start(Stage primaryStage) {
        // stage Stuff
        stage = primaryStage;
        stage.setTitle("Chat Application");

        // Setup Grid Layout
        GridPane grid = new GridPane();
        grid.setAlignment(Pos.TOP_LEFT);
        grid.setHgap(10);
        grid.setStyle("-fx-background-color: #272828;");

        // MenuBar
        MenuBar menu = new MenuBar();

        menu.setPrefWidth(1000);
        menu.setPrefHeight(20);

        // Creation of File + Help
        Menu file = new Menu("File");
        Menu help = new Menu("Help");

        // Add the Menus to the MenuBar
        menu.getMenus().add(file);
        menu.getMenus().add(help);

        // Add MenuBar to Scene
        menu.setVisible(true);
        grid.add(menu, 0, 0);

        // Text Area Stuff
        TextArea area = new TextArea();

        area.setPrefWidth(1000);
        area.setPrefHeight(700);
        area.setEditable(false);
        area.setStyle("-fx-control-inner-background: #313233;");

        // Add Text Area to Grid
        grid.add(area, 0, 1);

        // Text Field
        TextField enter = new TextField();

        enter.setPromptText("Type here...");
        enter.setMaxWidth(920);
        enter.setMaxHeight(30);
        enter.setStyle("-fx-padding: 5px;");

        // Button
        Button send = new Button("Send!");

        // Set the Handler for the Send Button Event
        send.setOnAction(event -> sendToTextArea(enter, area));

        // Use of HBox to Space out Text Field & Send Button
        HBox row = new HBox();

        row.setSpacing(10);
        row.setHgrow(enter, Priority.ALWAYS);
        row.getChildren().addAll(enter, send);

        // Use of VBox to Space out Text Field
        VBox box = new VBox();
        box.setSpacing(10);
        box.setPadding(new Insets(10));
        box.getChildren().add(row);

        // Add HBox in VBox to Grid
        grid.add(box, 0, 2);

        // Scene Stuff
        Scene scene = new Scene(grid, 1000, 750);
        stage.setScene(scene);

        // Display the stage
        stage.show();
    }

    private void sendToTextArea(TextField textField, TextArea textArea){
        //textArea.setText(string);Use setText if you want to set the whole area to something
        //textArea.clear();and .clear to clear all text from the TextArea
        textArea.appendText(textField.getText()+"\n");//Use appendText to append add new line because chat app
        textField.clear();
    }

    public static void main(String[] args) { launch(args); }
}

 Sheet3.Range("A5") 

祝你好运

答案 1 :(得分:0)

.box { width: 100px; height: 100px; background: grey; }返回范围对象。相反,您需要的是返回的Range对象的Value属性:

Sheet3.Range("A5")

但是请注意,一旦代码运行一次并重命名了Sheet3,由于“ Sheet3”将不存在,它将再次引发错误。如果您将Sheets(3).Name = Sheet3.Range("A5").Value 设置为与等号的另一侧相似,则此代码将多次运行。