将宏按钮复制粘贴到其他工作表时,宏不起作用

问题描述 投票:0回答:1

我编写了一个称为GenerateCSV的函数,该函数将数据写入一个csv文件。该功能存储在模块(“模块1”)中。为了完整性,我在下面共享代码,但我认为这对我的问题不是必需的。

Option Explicit

Sub GenerateCSV(ExcelStartRange As String, OutputFileName As String)

'Variable declaration
Dim Data As Variant
Dim MaxRow As Integer
Dim MaxColumn As Integer
Dim Row As Integer
Dim Column As Integer

Open OutputFileName For Output As #1

MaxRow = 2
MaxColumn = 722

For Row = 1 To MaxRow
    For Column = 1 To MaxColumn
        Data = Range(ExcelStartRange).Offset(Row - 1, Column - 1).Value

        If Column < MaxColumn Then
            Write #1, Data,
        Else
            Write #1, Data
        End If
    Next
    Application.StatusBar = "Row = " & Row
Next

Close #1

End Sub

我还在工作表“ OutputCFs”中编写了一个调用GenerateCSV的宏:

Private Sub CommandButton1_Click()
    Call GenerateCSV(Range("StartRange1"), Range("OutputFileName1"))
    Call GenerateCSV(Range("StartRange3"), Range("OutputFileName3"))

End Sub

当我按下“ OutputCFs”中的宏按钮时,它工作正常。但是,当我将宏按钮移动/复制粘贴到另一个工作表(例如“指南”)时,它不再起作用。

为了使“宏”按钮也可以在“指南”工作表中使用,我应该在代码中添加些什么。

谢谢。

excel vba
1个回答
0
投票

一个问题是,GenerateCSV()期望将String作为输入,而您的按钮代码将Range()对象作为输入。

EDIT#1:

这可能会导致问题。例如,如果Range("StartRange1")的值为A1,则按钮代码将假定A1在按钮所在的同一张纸上。

© www.soinside.com 2019 - 2024. All rights reserved.