Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10224 / 13646 ツリー ←次へ | 前へ→

【22970】選択範囲内で等間隔(任意)に罫線を引く TAKA 05/3/9(水) 9:53 質問[未読]
【22996】Re:選択範囲内で等間隔(任意)に罫線を引く G-Luck 05/3/9(水) 16:59 発言[未読]
【23001】Re:選択範囲内で等間隔(任意)に罫線を引く TAKA 05/3/9(水) 17:52 発言[未読]
【23004】Re:選択範囲内で等間隔(任意)に罫線を引く G-Luck 05/3/9(水) 19:34 発言[未読]
【23007】Re:選択範囲内で等間隔(任意)に罫線を引く TAKA 05/3/9(水) 19:52 発言[未読]
【23012】Re:選択範囲内で等間隔(任意)に罫線を引く G-Luck 05/3/9(水) 21:30 回答[未読]
【23025】作ってみました。 ぴかる 05/3/10(木) 11:59 回答[未読]
【23029】Re:作ってみました。 TAKA 05/3/10(木) 13:04 発言[未読]
【23032】Re:作ってみました。 ぴかる 05/3/10(木) 14:35 発言[未読]
【23047】Re:作ってみました。 TAKA 05/3/10(木) 19:53 お礼[未読]
【23044】Re:選択範囲内で等間隔(任意)に罫線を引く BB 05/3/10(木) 18:27 発言[未読]
【23046】Re:選択範囲内で等間隔(任意)に罫線を引く TAKA 05/3/10(木) 19:50 発言[未読]

【22970】選択範囲内で等間隔(任意)に罫線を引く
質問  TAKA  - 05/3/9(水) 9:53 -

引用なし
パスワード
   はじめまして<(_ _)>
どうしても作成できなくて困っています 教えてください

まず範囲を指定して(例:cell範囲 20×20)
その範囲内で任意指定で 4行置きに罫線を引き
任意指定で5列置きに罫線を引き(4×5)のマス目を
作りたいのです・・

もちろん任意指定ですので 範囲指定(30×60)の中に
(3×6)のマス目などもできるように・・・
自分の知識では無理なんです おねがいします

【22996】Re:選択範囲内で等間隔(任意)に罫線を引...
発言  G-Luck  - 05/3/9(水) 16:59 -

引用なし
パスワード
   ▼TAKA さん:

罫線を引くのを、マクロ記録してみては?

【23001】Re:選択範囲内で等間隔(任意)に罫線を引...
発言  TAKA  - 05/3/9(水) 17:52 -

引用なし
パスワード
   うーんと 記録でしてしまうと その条件しか罫線引けませんよね?
イメージ的にはInputboxかフォームかで x方向に3 y方向に6とか
入力すると 3×6のマス目がいくつもできるという感じでしたいんです

自分初心者なもので よくわからないんですが・・・


1 hits

【23004】Re:選択範囲内で等間隔(任意)に罫線を引...
発言  G-Luck  - 05/3/9(水) 19:34 -

引用なし
パスワード
   ▼TAKA さん:
それをいじれば?

最初はみんなそうやって進めます。
ちなみに、マクロ記録はどうなりますか?

【23007】Re:選択範囲内で等間隔(任意)に罫線を引...
発言  TAKA  - 05/3/9(水) 19:52 -

引用なし
パスワード
   えっと・・・
こんな感じです・・・
任意指定で等間隔(例:5行あけて罫線)の繰り返す方法がわからないのです
(x_x;)

Rows("1:1").Select
  Selection.Borders(xlDiagonalDown).LineStyle = xlNone
  Selection.Borders(xlDiagonalUp).LineStyle = xlNone
  Selection.Borders(xlEdgeLeft).LineStyle = xlNone
  With Selection.Borders(xlEdgeTop)
    .LineStyle = xlContinuous
    .Weight = xlMedium
    .ColorIndex = xlAutomatic
  End With
  Selection.Borders(xlEdgeBottom).LineStyle = xlNone
  Selection.Borders(xlEdgeRight).LineStyle = xlNone
  Selection.Borders(xlInsideVertical).LineStyle = xlNone
  Range("A1").Select

【23012】Re:選択範囲内で等間隔(任意)に罫線を引...
回答  G-Luck  - 05/3/9(水) 21:30 -

引用なし
パスワード
   ▼TAKA さん:

>Rows("1:1").Select
>  Selection.Borders(xlDiagonalDown).LineStyle = xlNone
>  Selection.Borders(xlDiagonalUp).LineStyle = xlNone
>  Selection.Borders(xlEdgeLeft).LineStyle = xlNone
>  With Selection.Borders(xlEdgeTop)
>    .LineStyle = xlContinuous
>    .Weight = xlMedium
>    .ColorIndex = xlAutomatic
>  End With
>  Selection.Borders(xlEdgeBottom).LineStyle = xlNone
>  Selection.Borders(xlEdgeRight).LineStyle = xlNone
>  Selection.Borders(xlInsideVertical).LineStyle = xlNone

これで、ひとつのセルに対する罫線です。
xlDiagonalDown 左上から右下
xlDiagonalUp  左下から右上
xlEdgeLeft   左
xlEdgeTop   上
xlEdgeBottom  下
xlEdgeRight  右
xlInsideVertical 内側の縦線
xlInsideHorizontal 内側の横線
後はselectionを
selection.Offset(n,m).select
で任意に移動してみては?
Borders
Offset
については、わかりますか?Helpは使えますか(インストールしていますか)?



【23025】作ってみました。
回答  ぴかる  - 05/3/10(木) 11:59 -

引用なし
パスワード
   TAKAさん、こんにちは。

おもしろそうやったんで、作ってみました。
こんなんでどうです?

Sub TEST()

Dim 外枠 As Range
Dim 内枠 As Range
Dim 行位置 As Long
Dim 列位置 As Integer
Dim 大行数 As Integer
Dim 大列数 As Integer
Dim 小行数 As Integer
Dim 小列数 As Integer
Dim I As Integer
Dim J As Integer

  Set 外枠 = Application.InputBox(Prompt:="外枠エリアをマウスにて指定して下さい。", Title:="【 マス目作成 】", _
        Top:=-80, Type:=8)
  Set 内枠 = Application.InputBox(Prompt:="内枠サイズをマウスにて指定して下さい。", Title:="【 マス目作成 】", _
        Top:=-80, Type:=8)
  行位置 = 外枠.Row
  列位置 = 外枠.Column
  大行数 = 外枠.Rows.Count
  大列数 = 外枠.Columns.Count
  小行数 = 内枠.Rows.Count
  小列数 = 内枠.Columns.Count

  If 大行数 >= 小行数 And 大列数 >= 小列数 And 大行数 Mod 小行数 = 0 And 大列数 Mod 小列数 = 0 Then
    For I = 行位置 To 行位置 + 小行数 * (大行数 / 小行数 - 1) Step 小行数
      For J = 列位置 To 列位置 + 小列数 * (大列数 / 小列数 - 1) Step 小列数
        Range(Cells(I, J), Cells(I + 小行数 - 1, J)).Borders(xlLeft).LineStyle = xlContinuous
        Range(Cells(I, J + 小列数 - 1), Cells(I + 小行数 - 1, J + 小列数 - 1)).Borders(xlRight).LineStyle = xlContinuous
        Range(Cells(I, J), Cells(I, J + 小列数 - 1)).Borders(xlTop).LineStyle = xlContinuous
        Range(Cells(I + 小行数 - 1, J), Cells(I + 小行数 - 1, J + 小列数 - 1)).Borders(xlBottom).LineStyle = xlContinuous
      Next
    Next
  Else
    MsgBox "この選択じゃぁ、出来ないよ!"
  End If

End Sub

【23029】Re:作ってみました。
発言  TAKA  - 05/3/10(木) 13:04 -

引用なし
パスワード
   G-Luckサン/ひかるサン ありがとうございます  ぺこ <(_ _)>
ひかるサンの作っていただいた物いい感じですが
コード内容がちょっと難しいです (T▽T)アハハ!


自分なりに一応何とか作ってはみました
結構理想に近い形にはなったのですが・・・
ひかるサンのみたいに範囲指定ができません
どうすればいいでしょう??

Sub 罫線()

t = InputBox("【左側余白】 数は ??")
If t = "" Then
   MsgBox "数を入力してください 初めからやり直しです"
   Exit Sub
  End If
  
x = InputBox("【上側余白】数は ??")
If x = "" Then
   MsgBox "を入力してください 初めからやり直しです"
   Exit Sub
  End If

n = InputBox("枠内の【 縦 】のcell数は ??")
If n = "" Then
   MsgBox "数を入力してください 初めからやり直しです"
   Exit Sub
   ElseIf n < 1 Then
   MsgBox " 1 以上を入力してください 初めからやり直しです"
   Exit Sub
  End If

m = InputBox("枠内の 【 横 】 のcell数は ??")
If m = "" Then
   MsgBox "数を入力してください 初めからやり直しです"
   Exit Sub
   ElseIf m < 1 Then
   MsgBox " 1 以上を入力してください 初めからやり直しです"
   Exit Sub
  End If
  

For retu = t To 43 Step 1
For gyo = x To 44 Step n

Cells(gyo + 1, retu + 1).Select
  Selection.Borders(xlDiagonalDown).LineStyle = xlNone
  Selection.Borders(xlDiagonalUp).LineStyle = xlNone
  Selection.Borders(xlEdgeLeft).LineStyle = xlNone
  With Selection.Borders(xlEdgeTop)
    .LineStyle = xlContinuous
    .Weight = xlMedium
    
  End With
  Selection.Borders(xlEdgeBottom).LineStyle = xlNone
  Selection.Borders(xlEdgeRight).LineStyle = xlNone
  Selection.Borders(xlInsideVertical).LineStyle = xlNone

   Next gyo
  Next retu
  
  
For cellretu = t To 43 Step m
For Cellgyo = x To 44 Step 1

Cells(Cellgyo + 1, cellretu + 1).Select

  With Selection.Borders(xlEdgeLeft)
    .LineStyle = xlContinuous
    .Weight = xlMedium
    
  End With

   Next Cellgyo
  Next cellretu

End Sub

【23032】Re:作ってみました。
発言  ぴかる  - 05/3/10(木) 14:35 -

引用なし
パスワード
   TAKA さん:

>コード内容がちょっと難しいです (T▽T)アハハ!
簡単にフローチャートのみ説明します。
1.マス目のエリアを取得
2.マス目サイズを取得
3.エリアに対して、指定したマス目サイズが入るかどうか判断
4.マス目を1ヶずつ描写

>ひかるサンのみたいに範囲指定ができません
>どうすればいいでしょう??
スンマセン。もうあまり時間がありません。対応が難しいです。

変数名等を変更し、少しだけ分かりやすくしたつもりです。
Sub TEST()

Dim マス目エリア As Range
Dim マス目サイズ As Range
Dim スタート位置縦 As Long
Dim スタート位置横 As Integer
Dim エリア行数 As Integer
Dim エリア列数 As Integer
Dim マス目行数 As Integer
Dim マス目列数 As Integer
Dim I As Integer
Dim J As Integer

  '外枠(マス目の外エリア)、内枠(1ヶのマスサイズ)を取得
  Set マス目エリア = Application.InputBox(Prompt:="マス目エリアを指定して下さい。", _
       Title:="【 マス目作成 】", Top:=-80, Type:=8)
  Set マス目サイズ = Application.InputBox(Prompt:="マス目サイズを指定して下さい。", _
       Title:="【 マス目作成 】", Top:=-80, Type:=8)
  
  スタート位置縦 = マス目エリア.Row
  スタート位置横 = マス目エリア.Column
  エリア行数 = マス目エリア.Rows.Count
  エリア列数 = マス目エリア.Columns.Count
  マス目行数 = マス目サイズ.Rows.Count
  マス目列数 = マス目サイズ.Columns.Count

  If エリア行数 >= マス目行数 And エリア列数 >= マス目列数 And _
    エリア行数 Mod マス目行数 = 0 And エリア列数 Mod マス目列数 = 0 Then
    For I = スタート位置縦 To _
      スタート位置縦 + マス目行数 * (エリア行数 / マス目行数 - 1) Step マス目行数
      For J = スタート位置横 To _
        スタート位置横 + マス目列数 * (エリア列数 / マス目列数 - 1) Step マス目列数
        With Range(Cells(I, J), Cells(I + マス目行数 - 1, J + マス目列数 - 1))
          .Borders(xlEdgeLeft).LineStyle = xlContinuous
          .Borders(xlEdgeTop).LineStyle = xlContinuous
          .Borders(xlEdgeBottom).LineStyle = xlContinuous
          .Borders(xlEdgeRight).LineStyle = xlContinuous
        End With
      Next
    Next
  Else
    MsgBox "この選択じゃぁ、出来ないよ!"
  End If

End Sub

【23044】Re:選択範囲内で等間隔(任意)に罫線を引...
発言  BB  - 05/3/10(木) 18:27 -

引用なし
パスワード
   ▼TAKA さん:

全部を人に作ってもらおうとするのではなく、自分で作ってみることをお勧めします。
おそらく自分で作ろうと思っても何から手をつけていいかとか、何が分からないのかが分からないって状態だと思います。
それを一つ一つ紐解いていくのは慣れないと大変でしょうけど、そうやって覚えていくのが他のコードを組むときにも役に立つと思いますよ。
頑張ってください。

【23046】Re:選択範囲内で等間隔(任意)に罫線を引...
発言  TAKA  - 05/3/10(木) 19:50 -

引用なし
パスワード
   ▼BB さん:
>全部を人に作ってもらおうとするのではなく、自分で作ってみることをお勧めします。

あのー・・・・別に全部人に作ってもらおうとしている訳ではありませんよ・・・
自分なりに作っていますし 作成したコードも公開しています
【23029】をみてください

理想に近づけるために知恵を貸してもらってるだけですよ

【23047】Re:作ってみました。
お礼  TAKA  - 05/3/10(木) 19:53 -

引用なし
パスワード
   ▼ぴかる さん:
ペコリ(o_ _)o))
どうもありがとうございました
参考にして勉強してみます

10224 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free