Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2016)
vbaの構文の中の範囲を同一シート内のA1/A2セルにて変えたい
投稿日時: 20/01/19 12:37:30
投稿者: 園 日暮

いつもお世話らなります。
 
 下記の参考の構文で、
 例えば
  Rows("15:1048576" "15 の部分をA1セルに 20 と入力すると
 
  Rows("20:1048576" にすることは可能ですか。
 
 もし可能ならばご指導いただけませんでしょうか。
  ※Columns("M:XFD" "M の部分も同様に A2セルに P と
 
下記のようしたい。(変更の構文は含まず)
Sub 非表示()
  
   Rows("20:1048576").Hidden = True
  
   Columns("P:XFD").Hidden = True
  
End Sub
 
 
参考(現在使用中)
Sub 非表示()
   Rows("15:1048576").Hidden = True
   Columns("M:XFD").Hidden = True
End Sub

回答
投稿日時: 20/01/19 12:57:33
投稿者: mattuwan44

引用:
 例えば
  Rows("15:1048576" "15 の部分をA1セルに 20 と入力すると
  
  Rows("20:1048576" にすることは可能ですか。

 
ダブルクォーテーションで括った場合、
その間の文字は「文字列」の値ですよという意味になるのは何となく理解されてますでしょうか?
 
なので、
A1セルの値を文字の連結演算子でくっつけて希望する文字列を作ればいいわけです。
 
Rows(Range("A1").value & :1048576")
 
としたらいいと思います。
列やセル範囲、シート名なども同じようにします。
 
ただし、
 
引用:
Sub 非表示()
   Rows("15:1048576").Hidden = True
   Columns("M:XFD").Hidden = True
End Sub

 
動的に使わない行や列は非表示にしたいという事だと思います。
その時にわざわざセルに手入力して指定する仕様はいかがなものでしょうか?
もし、判断基準(例えばシート上の使っている範囲を1行&1列拡張したセル範囲以外等)が
別途あるならば、説明されてはいかがでしょう?
20とか決める部分も含めて、作業の自動化(=マクロ化)できそうな気がします。

投稿日時: 20/01/19 13:34:45
投稿者: 園 日暮

大きな目的はデーターが入っている部分だけを表示させてすっきりさせたいだけです。
 
基本的にはデーターが入っている範囲に対して
 列  +1
 行も +1 をもって表示しています。
 ただし作業列があっても非表示になります。
 
ひとつのブックにだけならこのことは必要ないのですが
やっておきたいブックがあればその都度変えるために省力化でこの案が浮かびました。
 
もしなにかいい方法がご指導ください。
ほんの少しの知識でやりくりしています。
(笑)

回答
投稿日時: 20/01/19 14:15:30
投稿者: WinArrow
投稿者のウェブサイトに移動

非表示にする「行」や「列」の開始位置を
なぜ、セルの値で指定するのでしょうか?
 
セルの値にするということは、変数化することを意味します。
変数化は、動的に指定したい(操作者の意思で)ということが前提になります。
 
操作する人が、セルの値を入力して・・・・それからマウロを実行させるという
2アクションになります。
 
操作者の意思で非表示にさせる
という意図ならば、例えば、「行」を選択したときに右クリックで表示するメニューで対応できます。
列も同じです。わざわざマウロをつくってまでのことはないと考えますが・・・

投稿日時: 20/01/19 14:45:33
投稿者: 園 日暮

ひとつのブックにだけならこのことは必要ないのですが
 やっておきたいブックがいくつかあればその都度変えるために省力化でこの案が浮かびました。
このマクロが入ったブックはロックしシート保護をかけます。
同じブック内では一度設定したものは変更はないです、
 
右クリックですが列で言うとXFD迄選択は大変です。
 
ご理解ください。

回答
投稿日時: 20/01/19 14:58:23
投稿者: WinArrow
投稿者のウェブサイトに移動

>省力化
誰を対象にしているんでしょう?
 
若し、貴方自身のことをおっしゃっているんでしたら、
作成中は、非表示したり、表示したりの繰り返しになるでしょう。
 
非表示だけではなく、表示することも考えなくては・・・・

回答
投稿日時: 20/01/19 15:11:04
投稿者: WinArrow
投稿者のウェブサイトに移動

非表示にしたい「行」や「列」を非表示←→を切り替えたい
しかも、いくつかのブック共通のマクロをつくりたい
 
なんて考えたら、
アドインにすることをお勧めします。
 
USADRange以外を対象とすればよいので、
対象範囲をリテラルで指定することなく、
コードは作れると思います。
 

投稿日時: 20/01/19 15:33:22
投稿者: 園 日暮

予めこのマクロが入ったブックを原本を作成しておきます。
この原本を元にいろいろのニーズがあるにブック資料を作成します。
その時に表示の範囲がこのマクロ方法でお願いしているマクロで調整後、それにロックシート保護をかけて必要者に渡します。

回答
投稿日時: 20/01/19 16:13:53
投稿者: mattuwan44

引用:
右クリックですが列で言うとXFD迄選択は大変です。
  
ご理解ください。

 
例えば、
1)空白なシート上でマウスでB列を選択します。
2)Ctrlキー + Shiftキー + →キー 押下
で、B列からシート上の最終列まで選択出来ます。
行も↓キーに変わるだけです。
 
ちょいちょいお名前を見かけますので、
真面目に積極的にVBAを学ばれておられると思いますが、
この辺で「エクセル」ではどんなことが出来るんだろう?
ということも学んでみてはいかがでしょう?
そして、その操作をマクロの記録をしてみて、
その操作がどんな命令文になるのだろう?
とうことを探求してみてはいかがでしょう?
 
それから、
ExcelVBAでは、シート上のセル範囲に対して操作するということが大半です。
ならば、操作したいセル範囲を示す語彙を増やすことは今後のマクロ開発に必須です。
ということは、
シート上の状況に対してどういう表現ならば、
意図するセル範囲を示すことが出来るかを学ぶべきだと思います。
つまり、
教えてもらったサンプルを応用するではなく、
その命令がそのような機能なのかを理解してください。
機能が理解できていれば、どんな場面でその機能が利用できるか、
アイデアがどんどん膨らむと思います。
 
引用:
基本的にはデーターが入っている範囲に対して
 列  +1
 行も +1 をもって表示しています。
 ただし作業列があっても非表示になります。

 
データが入っている範囲というのはその範囲には空白行、空白列はないんですよね?
 
ということは、
「基準となるセルを含むアクティブな表範囲」の「その行数+1及びその列数+1の拡張したセル範囲」
ということになりませんかね?
 
これらの日本語がどのオブジェクトのどのプロパティと対応するかを、
分かるようにぜびなってください。
 
 

回答
投稿日時: 20/01/19 16:29:22
投稿者: mattuwan44

園 日暮 さんの引用:
予めこのマクロが入ったブックを原本を作成しておきます。
この原本を元にいろいろのニーズがあるにブック資料を作成します。
その時に表示の範囲がこのマクロ方法でお願いしているマクロで調整後、それにロックシート保護をかけて必要者に渡します。

 
んー。。。
個人用マクロブック(またはアドインブックに)にどんどんいろんなツール(機能)を作って、
エクセルを自分の使いやすいようにカスタマイズされているイメージでしょうか?
こういうのってマクロ覚えたてって面白いからいろいろ作りますけど、
結局ほとんど使わないし、標準機能で間に合ってしまうので、
僕なんかは、現在、素のままエクセルで過ごしてますね。
アドインで使ってるのは、VBAのコードのインデントを自動で整形してくれるやつと、
エクセルの表を掲示板に張付けるようにテキストに変換してくれるものですかね。
(掲示板の回答用に使うだけか^^;)
 
雛型として使うファイルは、
テンプレート形式で保存しておくと、
コピーが開くので、上書きが上書きのボタンで出来なくなります。
そういう運用方法もありかなと思います。
 
エクセルには僕も知らない機能がまだあるんだろうなーと思いつつ勉強する暇ないなーと思いつつ、
掲示板で面白い課題がないかなぁ〜とうろうろする日々です^^;

投稿日時: 20/01/19 16:30:27
投稿者: 園 日暮

ありがとうございます。
 
がんばります。
お世話になりました。

投稿日時: 20/01/19 16:33:01
投稿者: 園 日暮

mattuwan44 さんの引用:
園 日暮 さんの引用:
予めこのマクロが入ったブックを原本を作成しておきます。
この原本を元にいろいろのニーズがあるにブック資料を作成します。
その時に表示の範囲がこのマクロ方法でお願いしているマクロで調整後、それにロックシート保護をかけて必要者に渡します。

 
んー。。。
個人用マクロブック(またはアドインブックに)にどんどんいろんなツール(機能)を作って、
エクセルを自分の使いやすいようにカスタマイズされているイメージでしょうか?
こういうのってマクロ覚えたてって面白いからいろいろ作りますけど、
結局ほとんど使わないし、標準機能で間に合ってしまうので、
僕なんかは、現在、素のままエクセルで過ごしてますね。
アドインで使ってるのは、VBAのコードのインデントを自動で整形してくれるやつと、
エクセルの表を掲示板に張付けるようにテキストに変換してくれるものですかね。
(掲示板の回答用に使うだけか^^;)
 
雛型として使うファイルは、
テンプレート形式で保存しておくと、
コピーが開くので、上書きが上書きのボタンで出来なくなります。
そういう運用方法もありかなと思います。
 
エクセルには僕も知らない機能がまだあるんだろうなーと思いつつ勉強する暇ないなーと思いつつ、
掲示板で面白い課題がないかなぁ〜とうろうろする日々です^^;