質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

解決済

VBA プロシージャの外では無効です。の直しどころがわからない

dandadan
dandadan

総合スコア14

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

2回答

0評価

0クリップ

1054閲覧

投稿2022/01/19 01:57

編集2022/01/19 17:41

イメージ説明```swift
Sub 整列()

Dim q As Long Worksheets("ボタン").Select If Cells(2, 2) = "2020/8/1" Then q = 25 ElseIf Cells(2, 2) = "2020/7/1" Then q = 24 ElseIf Cells(2, 2) = "2020/6/1" Then q = 23 ElseIf Cells(2, 2) = "2020/5/1" Then q = 22 ElseIf Cells(2, 2) = "2020/4/1" Then q = 21 ElseIf Cells(2, 2) = "2020/3/1" Then q = 20 ElseIf Cells(2, 2) = "2020/2/1" Then q = 19 ElseIf Cells(2, 2) = "2020/1/1" Then q = 18 ElseIf Cells(2, 2) = "2019/12/1" Then q = 17 ElseIf Cells(2, 2) = "2019/11/1" Then q = 16 ElseIf Cells(2, 2) = "2019/10/1" Then q = 15 ElseIf Cells(2, 2) = "2019/9/1" Then q = 14 ElseIf Cells(2, 2) = "2019/8/1" Then q = 13 ElseIf Cells(2, 2) = "2019/7/1" Then q = 12 ElseIf Cells(2, 2) = "2019/6/1" Then q = 11 ElseIf Cells(2, 2) = "2019/5/1" Then q = 10 ElseIf Cells(2, 2) = "2019/4/1" Then q = 9 End If Worksheets("over8").Select Dim i, j, b As Long For i = 5 To 30 If Cells(q, i) <= Cells(q, i + 1) Then ElseIf Cells(q, i) > Cells(q, i + 1) Then Call FunctionExchange(i, i + 1) Next End Sub

Function Exchange(R1 As Integer, R2 As Integer)
Dim swap As Integer
swap = R2
R2 = R1
R1 = swap
If R2 - R1 = 1 Then '①入れ替える行が隣り合う場合
'R2を切り取り、(R1+1)列に挿入
Rows(R1).Cut
Rows(R2 + 1).Insert
Else '②入れ替える行が隣り合わない場合(①以外)
'R2を切り取り、(R1+1)列に挿入
Rows(R2).Cut
Rows(R1 + 1).Insert

'R1を切り取り、(R2+1)列に挿入 Rows(R1).Cut Rows(R2 + 1).Insert

End If
End Function

を実行するとSub 整列()の部分が黄色くなりエラーになります。 プロシージャの外にはなっていないと思うのですが どうしたらいいでしょうか… また、ついでに前半部分をコンパクトに書き直すアドバイスもいただけると幸いです。 表があり、対象月の営業成績を比較するため 対象月ごとに列を選択するコードを書いたつもりです。 追記 画像を追加しました こちらの営業成績を対象月を指定してバブルソートするようにコードを作成途中で 途中確認のため、実行したらプロシージャのエラーで止まりました。 Call FunctionExchange(i, i + 1) と、下のfunction部分を削除してもエラーは変わりませんでした。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

y_waiwai

2022/01/19 02:24

このままではコードが読みづらいので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
dandadan

2022/01/19 02:30

ご指摘ありがとうございます
tatsu99

2022/01/19 02:44

そもそも、なにをなさりたいのか、over"シートの内容を画像で表示し、説明していただけませんでしょうか。
dandadan

2022/01/19 08:34

別で開いていた標準モジュールにプロシージャエラーの原因がいました… エラーについては解決しました。 皆様ありがとうございます。
tatsu99

2022/01/19 08:41

具体的なセルの位置が判りません。 「2017/12/01」が表示されているセルの位置は何行目の何列ですか。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。