Excel vba - 如何正确声明字符串
Excel vba - how to declare string properly
我有一些代码重复了很多次,而且我还在几个 "group-runs" 上使用它们,所以我经常重复使用我的代码。所以,我试图以这样一种方式声明一些值,即我只能在每个 运行 的顶部更改一次。
下面我试图在顶部声明一个 sheet 名称和一个行号,但我只收到一个 "variable not defined" 错误。任何人都可以帮助我如何正确声明这两个值 - 以及如何将它们正确地放入我的代码中(其他声明已经完成并且正在运行)。
Dim grsh, ntid As String
grsh = s1g1
ntid = 2289
Application.StatusBar = "Now updating: & grsh & (new report data)." 'grsh
lr = sh_2_fravær.Range("A" & Rows.Count).End(xlUp).Row
sh_2_fravær.Range("A3:E" & lr).ClearContents
Set wb_Fravær = Workbooks("Fravær.xlsm")
lr = wb_Fravær.Sheets("grsh").Range("A" & Rows.Count).End(xlUp).Row 'grsh
wb_Fravær.Sheets("grsh").Range("A4:D" & lr).Copy 'grsh
sh_2_fravær.Range("A3").PasteSpecial
Application.CutCopyMode = False
lr = sh_11_tid.Range("A" & Rows.Count).End(xlUp).Row
sh_11_tid.Range("A&ntid:L" & lr).ClearContents 'ntid
Set wb_Tidsbruk = Workbooks("Tidsbruk.xlsm")
lr = wb_Tidsbruk.Sheets("grsh").Range("A" & Rows.Count).End(xlUp).Row 'grsh
wb_Tidsbruk.Sheets("grsh").Range("A5:I" & lr).Copy 'grsh
sh_11_tid.Range("A&ntid").PasteSpecial 'ntid
Application.CutCopyMode = False
看起来主要是基本的语法错误。
Dim grsh As String, ntid As Long '<~~ fixed
grsh = "s1g1" '<~~ fixed
ntid = 2289
Application.StatusBar = "Now updating: " & grsh & " (new report data)." '<~~ fixed
lr = sh_2_fravær.Range("A" & Rows.Count).End(xlUp).Row
sh_2_fravær.Range("A3:E" & lr).ClearContents
Set wb_Fravær = Workbooks("Fravær.xlsm")
lr = wb_Fravær.Worksheets(grsh).Range("A" & Rows.Count).End(xlUp).Row '<~~ fixed
wb_Fravær.Worksheets(grsh).Range("A4:D" & lr).Copy '<~~ fixed
sh_2_fravær.Range("A3").PasteSpecial
Application.CutCopyMode = False
lr = sh_11_tid.Range("A" & Rows.Count).End(xlUp).Row
sh_11_tid.Range("A" & ntid & ":L" & lr).ClearContents '<~~ fixed
Set wb_Tidsbruk = Workbooks("Tidsbruk.xlsm")
lr = wb_Tidsbruk.Worksheets(grsh).Range("A" & Rows.Count).End(xlUp).Row '<~~ fixed
wb_Tidsbruk.Worksheets(grsh).Range("A5:I" & lr).Copy '<~~ fixed
sh_11_tid.Range("A" & ntid).PasteSpecial '<~~ fixed
Application.CutCopyMode = False
我有一些代码重复了很多次,而且我还在几个 "group-runs" 上使用它们,所以我经常重复使用我的代码。所以,我试图以这样一种方式声明一些值,即我只能在每个 运行 的顶部更改一次。 下面我试图在顶部声明一个 sheet 名称和一个行号,但我只收到一个 "variable not defined" 错误。任何人都可以帮助我如何正确声明这两个值 - 以及如何将它们正确地放入我的代码中(其他声明已经完成并且正在运行)。
Dim grsh, ntid As String
grsh = s1g1
ntid = 2289
Application.StatusBar = "Now updating: & grsh & (new report data)." 'grsh
lr = sh_2_fravær.Range("A" & Rows.Count).End(xlUp).Row
sh_2_fravær.Range("A3:E" & lr).ClearContents
Set wb_Fravær = Workbooks("Fravær.xlsm")
lr = wb_Fravær.Sheets("grsh").Range("A" & Rows.Count).End(xlUp).Row 'grsh
wb_Fravær.Sheets("grsh").Range("A4:D" & lr).Copy 'grsh
sh_2_fravær.Range("A3").PasteSpecial
Application.CutCopyMode = False
lr = sh_11_tid.Range("A" & Rows.Count).End(xlUp).Row
sh_11_tid.Range("A&ntid:L" & lr).ClearContents 'ntid
Set wb_Tidsbruk = Workbooks("Tidsbruk.xlsm")
lr = wb_Tidsbruk.Sheets("grsh").Range("A" & Rows.Count).End(xlUp).Row 'grsh
wb_Tidsbruk.Sheets("grsh").Range("A5:I" & lr).Copy 'grsh
sh_11_tid.Range("A&ntid").PasteSpecial 'ntid
Application.CutCopyMode = False
看起来主要是基本的语法错误。
Dim grsh As String, ntid As Long '<~~ fixed
grsh = "s1g1" '<~~ fixed
ntid = 2289
Application.StatusBar = "Now updating: " & grsh & " (new report data)." '<~~ fixed
lr = sh_2_fravær.Range("A" & Rows.Count).End(xlUp).Row
sh_2_fravær.Range("A3:E" & lr).ClearContents
Set wb_Fravær = Workbooks("Fravær.xlsm")
lr = wb_Fravær.Worksheets(grsh).Range("A" & Rows.Count).End(xlUp).Row '<~~ fixed
wb_Fravær.Worksheets(grsh).Range("A4:D" & lr).Copy '<~~ fixed
sh_2_fravær.Range("A3").PasteSpecial
Application.CutCopyMode = False
lr = sh_11_tid.Range("A" & Rows.Count).End(xlUp).Row
sh_11_tid.Range("A" & ntid & ":L" & lr).ClearContents '<~~ fixed
Set wb_Tidsbruk = Workbooks("Tidsbruk.xlsm")
lr = wb_Tidsbruk.Worksheets(grsh).Range("A" & Rows.Count).End(xlUp).Row '<~~ fixed
wb_Tidsbruk.Worksheets(grsh).Range("A5:I" & lr).Copy '<~~ fixed
sh_11_tid.Range("A" & ntid).PasteSpecial '<~~ fixed
Application.CutCopyMode = False