Excel VBAこそ関数型言語使うべきだったとおもう 0368デフォルトの名無しさん (ワッチョイ 0b01-YggF)2019/07/15(月) 21:34:48.93ID:P4vPK//00 Sub Sample() Dim rng As Range, i As Integer, RangeArea As String, RowCount As Integer RangeArea = InputBox("選択したいセル範囲を入力してください", "セル範囲入力") Range(RangeArea).Select i = 1 For Each rng In Selection rng.Value = i i = i + 1 Next rng RowCount = Selection.Rows.Count Selection.Copy Selection(Selection.Rows.Count, 1).Offset(2).Select Selection.PasteSpecial xlPasteAll, Transpose:=True Application.CutCopyMode = False End Sub
With Selection If .Columns.Count >= 20 Then Excel.Application.EnableEvents = False .Resize(.Rows.Count, 19).Select Excel.Application.EnableEvents = True End If End With
End Sub 0399デフォルトの名無しさん (ワッチョイ fff7-fu+2)2019/07/18(木) 17:44:11.00ID:iWlQ47rb0 enableEvents操作いらんかったわ 0400デフォルトの名無しさん (スップ Sddf-9W53)2019/07/18(木) 17:48:00.14ID:pDSkjMbHd>>398 早い返信ありがとうございます。 コードありがとうございます。
これって例えば選択したセルが30から60と選択された場合ってエラーですか? 0401デフォルトの名無しさん (ワッチョイ fff7-fu+2)2019/07/18(木) 18:52:19.99ID:iWlQ47rb0 いや、 30〜60列目までの範囲が選択されたら 30〜48列目が選択された状態に変える 要望内容を捕らえ違えたかな? 0402デフォルトの名無しさん (ワッチョイ fff7-ShKg)2019/07/18(木) 20:19:45.62ID:iWlQ47rb0 もし19列目(T列)移行を選択しないようにするって意味なら以下 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim ActCel As Excel.Range Set ActCel = ActiveCell With ActCel If .Column >= 20 Then Set ActCel = Cells(.Row, 19) End If End With Dim cngRng As Excel.Range With Target If .Column > 20 Then Set cngRng = Range(Cells(.Row, 19), Cells(.Row + .Rows.Count - 1, 19)) ElseIf .Column + .Columns.Count > 20 Then Set cngRng = Range(Cells(.Row, .Column), Cells(.Row + .Rows.Count - 1, 19)) End If End With Excel.Application.ScreenUpdating = False Excel.Application.EnableEvents = False If Not cngRng Is Nothing Then cngRng.Select ActCel.Activate End If Excel.Application.EnableEvents = True Excel.Application.ScreenUpdating = True End Sub 0403デフォルトの名無しさん (ワッチョイ 4f91-9KOF)2019/07/18(木) 21:09:01.60ID:Vm+OSKMy0 ’こんな感じじゃなくて? Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim rng As Range Set rng = Intersect(Columns("A:T"), Target) '20まで If Not rng Is Nothing Then rng.Select Else Cells(1, 1).Select 'エラー時A1を選択 End If