Я использую код, который я получил из 101 готовых к использованию макросов Майкла Александра и Джона Уокенбаха.Как передать значение типа диапазона переменной типа String
В этом коде они задают значения диапазона в коде. Я хочу, чтобы пользователи могли выбирать значения. Я получаю ошибки после того, как я появился, чтобы успешно ввести пользователя в значение диапазона. Чтобы помочь мне отладить проблему, я только что написал короткий макрос, чтобы проверить, что я пытаюсь сделать. Но я не могу передать информацию в окно сообщения, чтобы я мог видеть, что он работает (хотя, похоже, потому, что, когда пользователь выбирает диапазон, указанный в поле ввода, я не могу понять) как взять предоставленный пользователем тип RANGE и превратить его в значение STRING, которое будет показано в моем сообщении, или использовать его в качестве диапазона. Теперь, будучи новичком, я сейчас думаю, что этот небольшой тест более важен, чем исходная проблема, чтобы помочь научиться отладке.
(я попробовал несколько различных вариантов, включая делают диапазон измерения, как AS Variant и пытаемся сделать StringVariable присваивается значение диапазона (например, UserRange = Rng1 Где UserRange является строковым типом и Rng1 имеет типа Range):
Вот мой код
Sub SelectRange()
Dim Rng1 As Range
Set Rng1 = Application.InputBox("select cell", Type:=8)
MsgBox ("You selected " & Rng1 & "as the range")
End Sub
Здесь был оригинальный код:
Sub Macro101()
' I've already changed Step#4 to read the worksheet name instead of C20
' I'm now trying to change Step#3 to let the user select the range but
' I'm having problems using the input from the user becuase I've made that
' Variable as Range (Not shown here).
'Step 1: Declare your variables
Dim pp As PowerPoint.Application
Dim PPPres As PowerPoint.Presentation
Dim PPSlide As PowerPoint.Slide
Dim xlwksht As Excel.Worksheet
Dim MyRange As String
Dim MyTitle As String
Dim Slidecount As Long
'Step 2: Open PowerPoint, add a new presentation and make visible
Set pp = New PowerPoint.Application
Set PPPres = pp.Presentations.Add
pp.Visible = True
'Step 3: Set the ranges for your data and title
MyRange = "A1:J29"
'Step 4: Start the loop through each worksheet
For Each xlwksht In ActiveWorkbook.Worksheets
xlwksht.Select
Application.Wait (Now + TimeValue("0:00:1"))
MyTitle = xlwksht.Range("C20").Value
'Step 5: Copy the range as picture
xlwksht.Range(MyRange).CopyPicture _
Appearance:=xlScreen, Format:=xlPicture
'Step 6: Count slides and add new slide as next available slide number
Slidecount = PPPres.Slides.Count
Set PPSlide = PPPres.Slides.Add(Slidecount + 1, ppLayoutTitleOnly)
PPSlide.Select
'Step 7: Paste the picture and adjust its position
PPSlide.Shapes.Paste.Select
pp.ActiveWindow.Selection.ShapeRange.Align msoAlignCenters, True
pp.ActiveWindow.Selection.ShapeRange.Top = 100
'Step 8: Add the title to the slide then move to next worksheet
PPSlide.Shapes.Title.TextFrame.TextRange.Text = MyTitle
Next xlwksht
'Step 9: Memory Cleanup
pp.Activate
Set PPSlide = Nothing
Set PPPres = Nothing
Set pp = Nothing
End Sub
Спасибо Тиграватар. Вы абсолютно правы в необходимости проверки ошибок. Я ударил отменить несколько раз сам, просто тестируя. Я включу это в основной модуль, который я пытаюсь изменить. – user2498217