#excel #vba #variables
Вопрос:
У меня возникли проблемы с использованием имени рабочего листа переменной в других областях моего кода. Я хотел бы скрыть рабочий лист на основе имени, в котором используется дата в определенной ячейке. Вот применимый код.
Sub StartMedCount() Dim actionname As String actionname = "Action List " amp; Sheets("MedicationCounts").Range("C2").Value ThisWorkbook.Worksheets(actionname).Select ActiveWindow.SelectedSheets.Visible = False end sub
У меня уже есть лист с названием «Список действий 11-24-2021», а ячейка C2 содержит 11-24-2021. Я получаю ошибку времени выполнения 9 — индекс вне диапазона. Вы можете помочь мне это исправить?
Комментарии:
1. Попробуйте изменить
.value
на.text
2. Попробуй:
amp; Format$(Sheets("MedicationCounts").Range("C2").Value, "mm-dd-yyyy")
Ответ №1:
Я попробовал это ниже, и это работает для меня.
Sub StartMedCount() Dim ws As Worksheet Dim ActioNname As String Set ws = ThisWorkbook.Worksheets("MedicationCounts") ActioNname = "Action List " amp; ws.Range("C2").Value ThisWorkbook.Worksheets(ActioNname).Visible = False End Sub
Ответ №2:
Мы нашли следующее исправление:
Дата в C2 была отформатирована в mm-dd-yyyy
формате, но истинное значение было mm/dd/yyyy
. Мы изменили формат на текст и ввели его с помощью дефисов. В другом месте кода, когда я добавляю эту дату, я использую Формат, чтобы изменить ее на дефисы, прежде чем она будет введена в ячейку.