Excel VBA 質問スレッド №1315 (解決済)
シートによってエラーが出たりでなかったりする関数
投稿者 : sumire2yomi4 投稿日時 : 2023/03/16(Thu) 11:17:28 OS : Windows 11 EXCEL : Excel 2019
一つのエクセルデータの中でVBAを組んでおります。
シートは"解答用紙"と"計算処理"の2つあるのですが、"計算処理"の中でボタンを押す、あるいは関数のデバックを始めると一番下のBorderAroundでエラーが発生します。
しかし、"解答用紙"の中でデバックを始めるとエラーが発生しません。
この関数は、"計算処理"のシートで計算された座標の位置をLoop関数にあてはめ、"解答用紙"のシートに指定された数だけ四角い枠を罫線で作るというものです。
原因となりうるものがわかる方がいらっしゃったらご返信いただけますと幸いです。
もしこれ以前の関数が必要ということであれば、仰って位だたいた際に返信で追記しようと思います。
~以下関数~
Dim X
X = Worksheets("計算処理").Range("C7")
For m = 1 To X
Worksheets("計算処理").Cells(5 + m, 14) = m
Next
Dim row As Integer
row = 5
Dim s As Integer
Dim t As Integer
Do Until Worksheets("計算処理").Cells(row, 15) = ""
s = Worksheets("計算処理").Cells(row, 15).Value
t = Worksheets("計算処理").Cells(row, 16).Value
Worksheets("解答用紙").Range(Cells(s, 1), Cells(t, 6)).BorderAround Weight:=xlThick
row = row + 1
Loop
一つのエクセルデータの中でVBAを組んでおります。
シートは"解答用紙"と"計算処理"の2つあるのですが、"計算処理"の中でボタンを押す、あるいは関数のデバックを始めると一番下のBorderAroundでエラーが発生します。
しかし、"解答用紙"の中でデバックを始めるとエラーが発生しません。
この関数は、"計算処理"のシートで計算された座標の位置をLoop関数にあてはめ、"解答用紙"のシートに指定された数だけ四角い枠を罫線で作るというものです。
原因となりうるものがわかる方がいらっしゃったらご返信いただけますと幸いです。
もしこれ以前の関数が必要ということであれば、仰って位だたいた際に返信で追記しようと思います。
~以下関数~
Dim X
X = Worksheets("計算処理").Range("C7")
For m = 1 To X
Worksheets("計算処理").Cells(5 + m, 14) = m
Next
Dim row As Integer
row = 5
Dim s As Integer
Dim t As Integer
Do Until Worksheets("計算処理").Cells(row, 15) = ""
s = Worksheets("計算処理").Cells(row, 15).Value
t = Worksheets("計算処理").Cells(row, 16).Value
Worksheets("解答用紙").Range(Cells(s, 1), Cells(t, 6)).BorderAround Weight:=xlThick
row = row + 1
Loop
スポンサーリンク
[返信 1] Re : シートによってエラーが出たりでなかったりする関数
投稿者 : ngk 投稿日時 : 2023/03/16(Thu) 11:36:23
Worksheets("解答用紙").Range(Cells(s, 1), Cells(t, 6)).BorderAround Weight:=xlThick
を
Worksheets("解答用紙").Range(Worksheets("解答用紙").Cells(s, 1), Worksheets("解答用紙").Cells(t, 6)).BorderAround Weight:=xlThick
にしてみて下さい。
CellsやRangeなどのオブジェクトはシートを指定しないとActivesheetが略されたものと看做されるので、
「計算処理」からマクロを起動すると
Worksheets("解答用紙").Range(Cells(s, 1), Cells(t, 6)).BorderAround Weight:=xlThick
はのRange内のアドレスは「計算処理」のアドレスになります。
それでエラーになるとは思えませんが、とりあえず試してみてください。
Worksheets("解答用紙").Range(Cells(s, 1), Cells(t, 6)).BorderAround Weight:=xlThick
を
Worksheets("解答用紙").Range(Worksheets("解答用紙").Cells(s, 1), Worksheets("解答用紙").Cells(t, 6)).BorderAround Weight:=xlThick
にしてみて下さい。
CellsやRangeなどのオブジェクトはシートを指定しないとActivesheetが略されたものと看做されるので、
「計算処理」からマクロを起動すると
Worksheets("解答用紙").Range(Cells(s, 1), Cells(t, 6)).BorderAround Weight:=xlThick
はのRange内のアドレスは「計算処理」のアドレスになります。
それでエラーになるとは思えませんが、とりあえず試してみてください。
[返信 2] Re : シートによってエラーが出たりでなかったりする関数
投稿者 : sumire2yomi4 投稿日時 : 2023/03/16(Thu) 11:44:50
ngk様
ご返信ありがとうございます。sumire2yomi4です。
仰っていただいたとおりに直してみたところ、稼働いたしました。
気を付けていたつもりでしたが、そこまで考えが及んでおりませんでした。
初歩的な質問にもご丁寧にお答えいただきありがとうございました。
ngk様
ご返信ありがとうございます。sumire2yomi4です。
仰っていただいたとおりに直してみたところ、稼働いたしました。
気を付けていたつもりでしたが、そこまで考えが及んでおりませんでした。
初歩的な質問にもご丁寧にお答えいただきありがとうございました。
[返信 3] Re : シートによってエラーが出たりでなかったりする関数
投稿者 : sumire2yomi4 投稿日時 : 2023/03/16(Thu) 11:45:32
ありがとうございました。
ありがとうございました。
当掲示板について
- Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
- 記事内ではHTMLのタグは使用できません。
- 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
- Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
- Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
( 処理日時 : 2026-04-05 02:09:15 )