【VBA】アクティブなセルの行を選択する、選択された行を非表示にする
2010-10-04 23:40:50 Mon
VBAマクロです。
表題の通り、「アクティブなセルの行を選択する」方法と「選択された行を非表示にする」方法です。
セルを非表示にするオペレーションをよくやるのであれば、Application.OnKey を使用するかマクロのショートカットキー登録すれば便利かと思います。
表題の通り、「アクティブなセルの行を選択する」方法と「選択された行を非表示にする」方法です。
rowno = ActiveCell.Row '現在選択されている行の行インデックスを取得 Rows(rowno & ":" & rowno).Select '行全体を選択状態とする Selection.EntireRow.Hidden = True '選択されている行を非表示にする
セルを非表示にするオペレーションをよくやるのであれば、Application.OnKey を使用するかマクロのショートカットキー登録すれば便利かと思います。
【EXCEL】同じ内容を他のセルにも一度に反映させるやり方
2010-09-04 21:59:38 Sat
1つのセルに入力した内容を他のセルにもコピーしたい場合、色々とやり方はあります。
1.入力したセルをコピーし、コピー先セルに貼り付け
2.CTRL で複数セルを選択した上で F2 で編集し、決定時に CTRL + Enter
2の方法を知らなかったのでメモしておきます。
1.入力したセルをコピーし、コピー先セルに貼り付け
2.CTRL で複数セルを選択した上で F2 で編集し、決定時に CTRL + Enter
2の方法を知らなかったのでメモしておきます。
【VBA】テキストファイル出力
2010-07-13 23:18:51 Tue
このページの左の方にある「名言集」という javascript はプラグインとして
誰かのつくっていたものの借り物です。
このプラグインに従って、名言とその発言者をエクセルに記述することで javascript ファイルを出力する簡単なマクロを作成しました。
上記ソースは、
・ファイルオープンダイアログで保存場所を選択する
・テキストファイルへ出力する
といったものの参考にできるかもしれません。
なお、上記のコメントを外してちゃんとコードを記述すると、行、列でネストして繰り返しをします。
1行目-1列目
1行目-2列目
1行目-3列目
:
:
:
2行目-1列目
2行目-2列目
2行目-3列目
:
:
:
といった感じになります。
なお、エクセルのほうは下記のようなイメージ。
マクロは、ボタンのクリックイベントで処理を起動しています。
これでちょっとは便利になったかな。
参考URL
http://www.happy2-island.com/excelsmile/smile03/capter00804.shtml
誰かのつくっていたものの借り物です。
このプラグインに従って、名言とその発言者をエクセルに記述することで javascript ファイルを出力する簡単なマクロを作成しました。
'/** ' * FC2ブログ用プラグインJavaScript出力マクロ ' */ Sub outputJavaScript() Dim path As String path = fileOpen() If path = "False" Then GoTo EndLabel Else 'MsgBox path End If main path EndLabel: End Sub '/** ' * ファイルオープンダイアログ ' * ファイルパスを返却します ' */ Private Function fileOpen() As String Dim vntFileName As Variant 'ファイルを保存するダイアログを開きます vntFileName = Application.GetSaveAsFilename( _ InitialFileName:="meigen.js" _ , FileFilter:="javascriptファイル(*.js),*.js" _ , FilterIndex:=1 _ , Title:="保存先の指定" _ ) fileOpen = vntFileName End Function '/** ' * valueが空でも出力する ' */ Sub writeText(ByVal value As String, ByVal n As Long) If value = "" Then Print #n, value Else Print #n, value End If End Sub '/** ' * メイン処理 ' */ Sub main(ByVal path As String) Dim ws As Worksheet Dim currentWs As Worksheet Dim counter As Long counter = 0 Set currentWs = ActiveSheet ' 入力最大行数取得 MaxRow = currentWs.Cells(Rows.Count, 1).End(xlUp).Row Dim n As Long n = FreeFile Open path For Output As #n writeText "<SCRIPT TYPE=""text/javascript"">", n writeText "<!-- ", n writeText "", n writeText "// このプラグインの本家です。<a href=""http://plaza.rakuten.co.jp/bluesidusfield/"" target=""_blank"">星が見える名言集</a>", n writeText "", n writeText "var msg = new Array();", n writeText "", n writeText "", n writeText "// 設定開始(メッセージの内容を設定してください)", n writeText "", n For i = 2 To MaxRow ' ' 入力最大列数定義 ' MaxCol = 2 ' ' j = 1 ' Do While j < MaxCol + 1 ' meigenString = currentWs.Cells(i, 1) hatugensyaString = currentWs.Cells(i, 2) ' ' ' ' 名言 ' If j = 1 Then writeText "msg[" & counter & "]= '『" & meigenString & "』…" & hatugensyaString & "';", n ' 名言の発言者 counter = counter + 1 Next i writeText "", n writeText "", n writeText "// 設定終了", n writeText "", n writeText "", n writeText "var no = Math.floor(Math.random() * msg.length);", n writeText "", n writeText "// 表示開始", n writeText "document.write(msg[no]);", n writeText "// 表示終了", n writeText "", n writeText "// -->", n writeText "</SCRIPT>", n Close #n End Sub
上記ソースは、
・ファイルオープンダイアログで保存場所を選択する
・テキストファイルへ出力する
といったものの参考にできるかもしれません。
なお、上記のコメントを外してちゃんとコードを記述すると、行、列でネストして繰り返しをします。
1行目-1列目
1行目-2列目
1行目-3列目
:
:
:
2行目-1列目
2行目-2列目
2行目-3列目
:
:
:
といった感じになります。
なお、エクセルのほうは下記のようなイメージ。
マクロは、ボタンのクリックイベントで処理を起動しています。
Private Sub CommandButton1_Click() Call ThisWorkbook.outputJavaScript End Sub
これでちょっとは便利になったかな。
参考URL
http://www.happy2-island.com/excelsmile/smile03/capter00804.shtml
【VBA】繰り返しのcontinueと正規表現
2010-04-20 03:21:12 Tue
■VBAで繰り返し途中にCONTINUEする方法
ないみたい。
なので、GOTO で NEXT の前までとぶ必要があるみたい。
http://d.hatena.ne.jp/love_peace/20090611/1244729060
■VBAの文字列判定で正規表現を使う方法
ある。
http://codezine.jp/article/detail/1655
こいつを・・・。
これで・・・。
if文でelse使っていないのはとりあえずご愛嬌で。
ガチャピンみたいないろになりました。
ないみたい。
なので、GOTO で NEXT の前までとぶ必要があるみたい。
http://d.hatena.ne.jp/love_peace/20090611/1244729060
■VBAの文字列判定で正規表現を使う方法
ある。
http://codezine.jp/article/detail/1655
こいつを・・・。
これで・・・。
Sub irotuke() Dim i As Long, buf As String Dim re As RegExp '宣言 Set re = New RegExp re.Pattern = "^├.*$" Dim re1 As RegExp '宣言 Set re1 = New RegExp re1.Pattern = "^└.*$" Dim re2 As RegExp '宣言 Set re2 = New RegExp re2.Pattern = "^(\w|\W).*$" For i = 1 To 65536 buf = Cells(i, 1).Value ''セルの値を変数bufに格納する If re.Test(buf) Then Range(Cells(i, 1), Cells(i, 256)).Interior.ColorIndex = 3 GoTo TestContenueLabel End If If re1.Test(buf) Then Range(Cells(i, 1), Cells(i, 256)).Interior.ColorIndex = 5 GoTo TestContenueLabel End If If re2.Test(buf) Then Range(Cells(i, 1), Cells(i, 256)).Interior.ColorIndex = 4 GoTo TestContenueLabel End If TestContenueLabel: Next i End Sub
if文でelse使っていないのはとりあえずご愛嬌で。
ガチャピンみたいないろになりました。
【Excel】名前定義と入力規則「リスト」
2010-04-04 23:42:15 Sun
データの入力規則で、他ワークシートへの参照は出来無い。
で、これを回避するために 名前定義 を使う。
定義したい範囲を選択して左上のところに 名前 を 定義 する。
これを今度は入力規則で利用する。
以下のような感じ。
=定義された名前 にするとOK.
これで擬似的に他シートへの入力規則データ参照が可能となる。
さらにこのシートを見せたくないのであれば、シートのプロパティ visible の値を変更しておく。
VisualBasicEditor は Alt + F11 で表示。
シートのプロパティ(画像左下のほう)visible の値を -1:表示 から 0:非表示 に変更しておく。
これで入力規則の文字は隠蔽された。
でもシートのプロパティを変更すると見えるようにもなるし編集できるようにもなる。
編集させたくない場合は保護するなりなんなり他の方法で。
で、これを回避するために 名前定義 を使う。
定義したい範囲を選択して左上のところに 名前 を 定義 する。
これを今度は入力規則で利用する。
以下のような感じ。
=定義された名前 にするとOK.
これで擬似的に他シートへの入力規則データ参照が可能となる。
さらにこのシートを見せたくないのであれば、シートのプロパティ visible の値を変更しておく。
VisualBasicEditor は Alt + F11 で表示。
シートのプロパティ(画像左下のほう)visible の値を -1:表示 から 0:非表示 に変更しておく。
これで入力規則の文字は隠蔽された。
でもシートのプロパティを変更すると見えるようにもなるし編集できるようにもなる。
編集させたくない場合は保護するなりなんなり他の方法で。