エクセル VBAにて
If MasterData(masteridx, 14).Borders(xlDiagonalUp).LineStyle.xlContinuous = Value Then
wb.Sheets(Seisannippou & CStr(SHeetNumber)).Range("T12").Borders(xlDiagonalUp).LineStyle = xlContinuous
Else
wb.Sheets(Seisannippou & CStr(SHeetNumber)).Range("T12").Value = MasterData(masteridx, 14)
wb.Sheets(Seisannippou & CStr(SHeetNumber)).Range("T12").Font.Bold = True
wb.Sheets(Seisannippou & CStr(SHeetNumber)).Range("T12").Font.Size = 22
End If
以上のようにマスタシート対象品の選択セルが斜線だったら
生産日報シート対象品の選択セルに斜線を記入するようにしたいのですが、If MasterData(masteridx, 14).Borders(xlDiagonalUp).LineStyle.xlContinuous = Value Then
wb.Sheets(Seisannippou & CStr(SHeetNumber)).Range("T12").Borders(xlDiagonalUp).LineStyle = xlContinuous
の書き込み方(マスタシートの斜線判断)がわかりません。
どのように書き込むのでしょうか?
No.1
- 回答日時:
こんばんは。
この前の続きのような話になりそうですね。
MasterData(masteridx, 14)
MasterData は、Range ですね。あまり、このような使い方はしませんね。ご自分で分かっていればよいのですが、これは、相対位置になってしまいますので、かなりややこしくなります。
If MasterData(masteridx, 14).Borders(xlDiagonalUp).LineStyle.xlContinuous = Value Then
この部分を含めた以下は、このようにしたら良いと思います。
With wb.Sheets(Seisannippou & CStr(SHeetNumber))
If MasterData(masteridx, 14).Borders(xlDiagonalUp).LineStyle = xlNone Then
.Range("T12").Borders(xlDiagonalUp).LineStyle = xlContinuous
Else
.Range("T12").Value = MasterData(masteridx, 14)
.Range("T12").Font.Bold = True
.Range("T12").Font.Size = 22
End If
End With
御礼が遅くなりましてすみません。
上記のコード書込参考になりました。
作成プログラムに書き込んでみましたが
If MasterData(masteridx, 14).Borders(xlDiagonalUp).LineStyle = xlNone Then
の部分で 実行時エラー'424':
オブジェクトが必要です
以上のエラーが出てしまいます。
どうやら他の部分でエラーを誘発しているようですので
現在調べています。
色々と参考になることを教えていただきありがとうございます。
No.2
- 回答日時:
こんにちは。
質問趣旨を勘違いしてるかもしれませんが。
Dim rSrc As Range
Dim rDst As Range
Set rSrc = Worksheets("Sheet1").Cells(1, "A")
Set rDst = Worksheets("Sheet2").Cells(1, "A")
rDst.Borders(xlDiagonalUp).LineStyle = _
rSrc.Borders(xlDiagonalUp).LineStyle
罫線を同期させるなら、If による判定は不要に思いました。
私見ですが、変数名は短く、またコードの可読性に気を配った方が回答
し易いです。
例えば、Set ステートメントひとつ使うだけでもご質問前段のコードは
非常にすっきりします。
Dim r As Range
Set r = wb.Sheets(Seisannippou & CStr(SHeetNumber)).Range("T12")
If MasterData(masteridx, 14).Borders(xlDiagonalUp).LineStyle = xlContinuous Then
r.Borders(xlDiagonalUp).LineStyle = xlContinuous
Else
r.Value = MasterData(masteridx, 14)
r.Font.Bold = True
r.Font.Size = 22
End If
ご参考までに。
御礼が遅くなりましてすみません。
前任者が作成したコードをそのまま記載してしまい
可読性が悪くてすみません。
現状はとりあえず思うように動けばいいと
思って作成を行なっていますが
上記のように可読性が悪くて修正、追加時に
苦労をしております。
とても参考になりました。
ありがとうございます。
No.3ベストアンサー
- 回答日時:
#1の回答者です。
>作成プログラムに書き込んでみましたが
> If MasterData(masteridx, 14).Borders(xlDiagonalUp).LineStyle = xlNone Then
>の部分で 実行時エラー'424':
>オブジェクトが必要です
その部分にエラーが出るというのは、実際には分かりませんね。
全体的には、単に凝った変数を入れただけで、かなり単純なロジックだと思います。
同じような繰り返しや変数は、きちんとまとめて入れていけば、もっと分かりやすくなるだろうと思います。
例えば、
wb.Sheets(Seisannippou & CStr(SHeetNumber)).Range("T12")
このようなコンテナ型で書くなら、それを変数に入れるなり、With ステートメントにしたら、見やすく、より簡単になるだろうと思います。
オブジェクトが必要だというのなら、それはそのままの意味ですが、それは、そのコードの前の部分からのつなぎの問題だと思います。また、その部分より前で、何かのコードで、オブジェクトが失っている可能性もあります。
なお、もしかしたら、これはコントロールツールのコマンドボタンの内容から抜き出したものでしょうか。あまり、プロシージャから行の抜き出しされると、さっぱり見えないのです。
何度もアドバイスを頂きありがとうございます。
そうですね、凝った変数が使用してあるため
見にくい為、徐々に見やすく修正していきます。
もう一度最初から動作を確認してオブジェクトの
確認してみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 罫線について B列3行目から21行毎にデータがはいります。 データがはいったらデータが入った 6 2022/11/15 17:22
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- Visual Basic(VBA) 【VBA】先月分の取得ができない理由が分かりません。 2 2022/04/24 11:16
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) オートフィルタで抽出結果に 罫線をひく方法 1 2022/07/13 13:08
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Excel(エクセル) vba userformで漢字を全角カタカナに 2 2022/07/24 15:38
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
Excel VBA 条件に一致した言葉の下セルに斜線をひきたい
Visual Basic(VBA)
-
斜め罫線の判定 ExcelVBA
Excel(エクセル)
-
Excelの関数について、特定の文字を入れると斜線や線を入れることは出来ますか?
Excel(エクセル)
-
-
4
Excel データ入力に応じて自動的に斜線を引きたいのですが
Excel(エクセル)
-
5
条件付き書式で自動で斜線の罫線を引く
Excel(エクセル)
-
6
エクセル 結合セル内に空白なら斜線を引くマクロ
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パワーポイントの画面がずれる
-
Excelにメールを添付する
-
Excelで隠れてしまった図...
-
パワーポイントにエクセルの表...
-
テキストボックスがないのに、...
-
エクセルの[コントロールの書式...
-
excelでチェックボックスが表示...
-
イラストレーターで水面の網目模様
-
3Dオブジェクトとはなんですか?
-
イラストレーター(Illustrator)...
-
EMBED関数について
-
pdf xchange viewer オブジェク...
-
オートシェイプが消えたり出た...
-
Excelの中にExcelのオブジェク...
-
オブジェクトがシートからはみ...
-
Illustrator CS4 : 特定のレイ...
-
エクセルの塗りつぶしで斜線を...
-
イラストレーターの面積を求める
-
EXCELのグラフのオブジェクト変...
-
エクセルに入力しようとすると...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パワーポイントの画面がずれる
-
Excelにメールを添付する
-
Excelで隠れてしまった図...
-
excelでチェックボックスが表示...
-
パワーポイントにエクセルの表...
-
ExcelでB5をA4にしたい。
-
pdf xchange viewer オブジェク...
-
イラストレーターの面積を求める
-
オートシェイプが消えたり出た...
-
文字の特定箇所に背景色をつけ...
-
エクセルに入力しようとすると...
-
EMBED関数について
-
テキストボックスがないのに、...
-
【エクセル】列を挿入しようと...
-
Wordのツールバーに常に数...
-
Excelの中にExcelのオブジェク...
-
エクセルからワードへの表挿入...
-
Wordのオブジェットと図の違い...
-
エクセルに任意のページのワー...
-
Illustrator CS4 : 特定のレイ...
おすすめ情報