我正在尝试使用VBA将Excel工作表重命名为该工作表中单元格的内容。
我创建了一个名为Rename_Sheets的单独模块,在线上的各种帖子都建议使用以下代码:
Sheets(3).Name = Sheet3.Range("A5")
或其非常相似的变体。
使用debug.print,以上代码的两部分都返回预期的结果,即工作表名称和单元格文本。 当我运行引用的代码时,收到消息“应用程序定义的错误或对象定义的错误”。 我不明白为什么会收到错误消息。
答案 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
设置为与等号的另一侧相似,则此代码将多次运行。