cj_mover の回答履歴

全798件中721~740件表示
  • エクセルで数字の変換

    エクセル2000です。 ひとつのセルの中に、たとえば「2009年は第1、第5営業部の24名」という文字列があったとします。これを半角一桁の数字のみに限定して全角の数字に変換する方法はないでしょうか? JIS関数だとすべてが全角になってしまいます。 関数でもVBAでもかまいません。 「2009年は第1、第5営業部の24名」と変換したいのです。 対象が何百もあるので困っています。 よろしくお願いします。

  • エクセルで数字の変換

    エクセル2000です。 ひとつのセルの中に、たとえば「2009年は第1、第5営業部の24名」という文字列があったとします。これを半角一桁の数字のみに限定して全角の数字に変換する方法はないでしょうか? JIS関数だとすべてが全角になってしまいます。 関数でもVBAでもかまいません。 「2009年は第1、第5営業部の24名」と変換したいのです。 対象が何百もあるので困っています。 よろしくお願いします。

  • エクセルVBAで配列内に空白データを入れる場合

    エクセル2000です。 ある大きな表のうち、0値を非表示ではなく完全に削除するために以下のようなマクロを書いてみました。 一旦配列に取り込んでいるのは高速化のためです。 これで見た目には目的を達しているのですが、実際には0値が長さ0の文字列に変わっただけで完全な空白にはなっていません。 配列にとりこまず、セルをループして0値のセルをClearすれば解決するのはわかるのですが、ほかにいい方法はないでしょうか? Sub TEST0値() Dim myAr With ActiveSheet x = .Range("A" & Rows.Count).End(xlUp).Row myAr = .Range("A4:AP" & x).Value For i = LBound(myAr, 1) To UBound(myAr, 1) For n = LBound(myAr, 2) To UBound(myAr, 2) If myAr(i, n) = 0 Then myAr(i, n) = "" Next n Next i .Range("A4:AP" & x).Value = myAr End With End Sub

  • IF関数で空欄("")の時、Nullにしたい

    例えば、=if(A1="","","該当無")とB1に入力したとします。 A1に何も入力されていなければ、B1はもちろん空欄となりますが、 編集→ジャンプ→セル選択→空白セルを選択してもヒットしません。 計算結果が空欄の場合は、最終的にそのセルは空欄にしたいのですが良い方法はないでしょうか?

  • ExcelVba 有効なセルかどうかを判定するには

    いつもお世話になります。 指定されたセルが有効なセルかどうかを判定したいのですが、何かよい方法がないかどうか質問させていただきました。 ユーザにrangeオブジェクトの引数を入力してもらう形なのですが、指定された値が例えば、aaa などの場合、Range("aaa")となり、当然これは無効なので、そのような指定はできませんよ、としたいのですが、これをエラーとしてハンドリングするのではなく、よい判定方法はないものでしょうか。 よろしくお願いします。

  • 配列の値を置換するにはどうすればいいでしょう?

    http://www.moug.net/tech/exvba/0100022.htm を参考にして配列を含むVBAコードを作成しているのですが 例えば「○」を「●」に置換したい場合、 どうすればいいのでしょう? myMsg(0) = "区切り文字省略 : " & Join(Replace(myStr, "○", "●")) にしたら「型が一致しません」と言うエラーになります。 どなたかご教授よろしくお願いします。

  • エクセルVBAのIDプロパティ?

    今日初めて知ったのですが「セルに識別用ラベルを設定する」IDプロパティというのがあるようです。ただVBEの「ヘルプ」を見ただけでは「Web ページとして保存し、HTML 行を Web ページに追加」するもののようで、Web ページ保存になど縁のないわたしにはさっぱりわかりません。でも、面白そうなので試してみると、 Sub ID_Wt() ActiveSheet.Range("V10").ID = "ABC" End Sub で、セルV10に"ABC"が設定され、 Sub ID_Rd() MsgBox ActiveSheet.Range("V10").ID End Sub で、読むことができました。 ◎ IDはセルのどこに保存されたのでしょうか?セルのどこを見ても見当たりませんし、そのセルはそれまでのUsedRange外に設定した場合でもUsedRangeは拡張されまれません。とても不思議です。 ◎ VBA以外の方法でIDを読むことは出来るのでしょうか? ◎ 一旦終了すると設定したIDは消えてしまうようですがそういうものなのでしょうか?

  • エクセルVBAのIDプロパティ?

    今日初めて知ったのですが「セルに識別用ラベルを設定する」IDプロパティというのがあるようです。ただVBEの「ヘルプ」を見ただけでは「Web ページとして保存し、HTML 行を Web ページに追加」するもののようで、Web ページ保存になど縁のないわたしにはさっぱりわかりません。でも、面白そうなので試してみると、 Sub ID_Wt() ActiveSheet.Range("V10").ID = "ABC" End Sub で、セルV10に"ABC"が設定され、 Sub ID_Rd() MsgBox ActiveSheet.Range("V10").ID End Sub で、読むことができました。 ◎ IDはセルのどこに保存されたのでしょうか?セルのどこを見ても見当たりませんし、そのセルはそれまでのUsedRange外に設定した場合でもUsedRangeは拡張されまれません。とても不思議です。 ◎ VBA以外の方法でIDを読むことは出来るのでしょうか? ◎ 一旦終了すると設定したIDは消えてしまうようですがそういうものなのでしょうか?

  • エクセルマクロのイベントプロシージャについて

     こにんちは。仕事で使う表をもっと便利にするため、独学でマクロを勉強、作成している者です。  さて、今回、ユーザーフォーム上に5つのテキストボックスを配置して(Textbox1~Textbox5)、Textbox1に入力した内容によってカーソルの移動先を変えるマクロを作成したいのですが、うまくいきません。  私の作成したコードは以下の通りです(今回、質問するにあたって、かなり省略しています)。 Private Sub TextBox1_AfterUpdate() Select Case TextBox1.Value Case 1 TextBox1.SetFocus Case 2 TextBox2.SetFocus Case 3 TextBox3.SetFocus Case 4 TextBox4.SetFocus Case Is >= 5 TextBox5.SetFocus End Select End Sub  そこで、いろいろ試したり調べたりしたのですが、どうもイベントプロシージャそのものに対する基本的な認識ができていない気がしてきました。  と言いますのも、上記プログラムを走らせると、1、2を入力した際はタブオーダーに従い?Textbox2へカーソルが移動しますが、3以上の数値を入力すると、4でも5でもTextbox3へ移動します。  何をやってもタブオーダー通りにしか移動しないのならともかく、なぜこのような変な動きになるのか、分かりやすく説明していただくことは可能でしょうか。  また、もちろんどうすれば目的通り動かせるのかも教えていただきたく思います。  もちろん一番の目的はそれなのですが、今後の理解のため、イベントのタイミング等について教えていただければ幸いです。  なお、各イベントの意味については、下記のページを見て理解はできたつもりなのですが・・・。  http://home.att.ne.jp/zeta/gen/excel/c04p30.htm

  • エクセルVBAで、とびとびのセルの順次選択方法?!

    仮にA1:B10という範囲内で、空白のセルだけを一つずつ順番に選択しようと思い、以下のコードを書いてみました。 実行してみると、範囲内がすべて空白の場合にはA1→B1→A2→B2→・・・と、選択してくれます。 しかし、空白と空白以外のセルが混在していると、最初の空白セルから下に、範囲内の空白セル数分だけ、空白であると否とを問わず選択してしまいます。 ( ̄□ ̄;)!! myRngには空白セルだけを指定され、myRng.Cells.Countでもちゃんと空白セル数がカウントされます。 でも、myRng.Cells(i).Select では正しく選択されないのはなぜでしょうか? Cells(i)を使用せず、ループを For Each c In myRng c.Select Application.Wait Now + TimeValue("0:00:01") Next c で回せば選択できるのに・・・・・。 Sub test01() Dim x As Long, i As Long, myRng As Range With ActiveSheet Set myRng = .Range("A1:B10").SpecialCells(xlCellTypeBlanks) x = myRng.Cells.Count For i = 1 To x myRng.Cells(i).Select Application.Wait Now + TimeValue("0:00:01") Next i End With Set myRng = Nothing End Sub ご教示くださいませ。 (o。_。)oペコッ.

  • エクセルVBAで、とびとびのセルの順次選択方法?!

    仮にA1:B10という範囲内で、空白のセルだけを一つずつ順番に選択しようと思い、以下のコードを書いてみました。 実行してみると、範囲内がすべて空白の場合にはA1→B1→A2→B2→・・・と、選択してくれます。 しかし、空白と空白以外のセルが混在していると、最初の空白セルから下に、範囲内の空白セル数分だけ、空白であると否とを問わず選択してしまいます。 ( ̄□ ̄;)!! myRngには空白セルだけを指定され、myRng.Cells.Countでもちゃんと空白セル数がカウントされます。 でも、myRng.Cells(i).Select では正しく選択されないのはなぜでしょうか? Cells(i)を使用せず、ループを For Each c In myRng c.Select Application.Wait Now + TimeValue("0:00:01") Next c で回せば選択できるのに・・・・・。 Sub test01() Dim x As Long, i As Long, myRng As Range With ActiveSheet Set myRng = .Range("A1:B10").SpecialCells(xlCellTypeBlanks) x = myRng.Cells.Count For i = 1 To x myRng.Cells(i).Select Application.Wait Now + TimeValue("0:00:01") Next i End With Set myRng = Nothing End Sub ご教示くださいませ。 (o。_。)oペコッ.

  • エクセルマクロのイベントプロシージャについて

     こにんちは。仕事で使う表をもっと便利にするため、独学でマクロを勉強、作成している者です。  さて、今回、ユーザーフォーム上に5つのテキストボックスを配置して(Textbox1~Textbox5)、Textbox1に入力した内容によってカーソルの移動先を変えるマクロを作成したいのですが、うまくいきません。  私の作成したコードは以下の通りです(今回、質問するにあたって、かなり省略しています)。 Private Sub TextBox1_AfterUpdate() Select Case TextBox1.Value Case 1 TextBox1.SetFocus Case 2 TextBox2.SetFocus Case 3 TextBox3.SetFocus Case 4 TextBox4.SetFocus Case Is >= 5 TextBox5.SetFocus End Select End Sub  そこで、いろいろ試したり調べたりしたのですが、どうもイベントプロシージャそのものに対する基本的な認識ができていない気がしてきました。  と言いますのも、上記プログラムを走らせると、1、2を入力した際はタブオーダーに従い?Textbox2へカーソルが移動しますが、3以上の数値を入力すると、4でも5でもTextbox3へ移動します。  何をやってもタブオーダー通りにしか移動しないのならともかく、なぜこのような変な動きになるのか、分かりやすく説明していただくことは可能でしょうか。  また、もちろんどうすれば目的通り動かせるのかも教えていただきたく思います。  もちろん一番の目的はそれなのですが、今後の理解のため、イベントのタイミング等について教えていただければ幸いです。  なお、各イベントの意味については、下記のページを見て理解はできたつもりなのですが・・・。  http://home.att.ne.jp/zeta/gen/excel/c04p30.htm

  • VBA DictionaryオブジェクトのItemについての質問です。

    エクセル2000です。 A列からE列までの1行から最終行不特定の表があります。 A列はすべて文字列で、B~Gは数値、E列は文字列です。 A列の文字列には重複があります。 この表を別シートにA列の重複がない表として作成したいと思います。 その際、列が重複する場合にはB~G列は合計数値、E列は文字列を結合させます。 Dictionaryオブジェクトを用い、A列データをKey、B~E列データを配列でItemとして下記のコードを書きました。 このコードで目的は達成しました。 質問はKeyが重複する場合、B~E列のデータを配列として取り込んだItemに次のB~E列のデータを加算あるいは結合する方法の簡略化です。 このコードではItem内の配列データを、さらに配列変数のmyArに代入して、要素ごとにForNextで回しましたが、配列変数にわざわざ代入しなくとも出来る方法があるかどうかが知りたいのです。 あるいはまったく別な方法でもかまいません。 ご教示いただければ幸いです。 Sub ItemsTest() Dim myDic As Object, ns As Worksheet '変数宣言 Dim c As Range, cc As Range, i As Integer Dim myAr Set myDic = CreateObject("Scripting.Dictionary") 'myDicを用意 For Each c In Range(Cells(1, "A"), Cells(Rows.Count, "A").End(xlUp)) 'A列の各データについて If Not myDic.exists(c.Value) Then 'myDicになければ myDic.Add c.Value, Array(c.Offset(0, 1).Value, c.Offset(0, 2).Value, c.Offset(0, 3).Value, c.Offset(0, 4).Value) '追加しB~E列データを配列でItemに Else 'myDicにあれば myAr = myDic(c.Value) 'Itemを配列myArに For i = LBound(myAr) To UBound(myAr) myAr(i) = myAr(i) + c.Offset(0, i + 1).Value '配列の要素ごとに加算 Next i myDic(c.Value) = myAr '配列myArをItemにもどす End If Next c '繰り返し Set ns = Worksheets.Add(After:=ActiveSheet) 'シートを追加 ns.Range("A1").Resize(myDic.Count, 1).Value = Application.Transpose(myDic.Keys) 'A列にKeyデータ転記 For Each cc In ns.Range("A1:A" & myDic.Count) cc.Offset(0, 1).Resize(, UBound(myAr) + 1).Value = myDic.Item(cc.Value) 'B~E列にItemデータ転記 Next End Sub  (o。_。)oペコッ

  • VBA DictionaryオブジェクトのItemについての質問です。

    エクセル2000です。 A列からE列までの1行から最終行不特定の表があります。 A列はすべて文字列で、B~Gは数値、E列は文字列です。 A列の文字列には重複があります。 この表を別シートにA列の重複がない表として作成したいと思います。 その際、列が重複する場合にはB~G列は合計数値、E列は文字列を結合させます。 Dictionaryオブジェクトを用い、A列データをKey、B~E列データを配列でItemとして下記のコードを書きました。 このコードで目的は達成しました。 質問はKeyが重複する場合、B~E列のデータを配列として取り込んだItemに次のB~E列のデータを加算あるいは結合する方法の簡略化です。 このコードではItem内の配列データを、さらに配列変数のmyArに代入して、要素ごとにForNextで回しましたが、配列変数にわざわざ代入しなくとも出来る方法があるかどうかが知りたいのです。 あるいはまったく別な方法でもかまいません。 ご教示いただければ幸いです。 Sub ItemsTest() Dim myDic As Object, ns As Worksheet '変数宣言 Dim c As Range, cc As Range, i As Integer Dim myAr Set myDic = CreateObject("Scripting.Dictionary") 'myDicを用意 For Each c In Range(Cells(1, "A"), Cells(Rows.Count, "A").End(xlUp)) 'A列の各データについて If Not myDic.exists(c.Value) Then 'myDicになければ myDic.Add c.Value, Array(c.Offset(0, 1).Value, c.Offset(0, 2).Value, c.Offset(0, 3).Value, c.Offset(0, 4).Value) '追加しB~E列データを配列でItemに Else 'myDicにあれば myAr = myDic(c.Value) 'Itemを配列myArに For i = LBound(myAr) To UBound(myAr) myAr(i) = myAr(i) + c.Offset(0, i + 1).Value '配列の要素ごとに加算 Next i myDic(c.Value) = myAr '配列myArをItemにもどす End If Next c '繰り返し Set ns = Worksheets.Add(After:=ActiveSheet) 'シートを追加 ns.Range("A1").Resize(myDic.Count, 1).Value = Application.Transpose(myDic.Keys) 'A列にKeyデータ転記 For Each cc In ns.Range("A1:A" & myDic.Count) cc.Offset(0, 1).Resize(, UBound(myAr) + 1).Value = myDic.Item(cc.Value) 'B~E列にItemデータ転記 Next End Sub  (o。_。)oペコッ

  • ExcelのVBAで一部困っています。

    現在下記のようなプログラム(一部)を使っています。 数式をコピーしているのですが、これを左側のセルが空白になったらコピーをやめるか、数式記入をやめる方法に変えたいのですが、どなたか、ご教授ください。 後で余計にコピーしたセルを消す作業を低減したいと思っています。 宜しくお願いします。 Range("E1").Select ActiveCell.FormulaR1C1 = "専用コード" Range("E2").Select ActiveCell.FormulaR1C1 = _ "=IF(RC[-1]=""ホンテン "",""ラ001"",IF(RC[-1]=""エーテン "",""ラ005"",IF(RC[-1]=""ビーテン "",""ラ007"",IF(RC[-1]=""シーテン "",""ラ008"",IF(RC[-1]=""ディーテン "",""ラ009"",IF(RC[-1]=""イーテン "",""ラ015"",IF(RC[-1]=""エフテン "",""ラ011"",IF(RC[-1]=""ジーテン "",""ラ014"",""""))))))))" Range("E2").Select Selection.Copy Range("e3:e1500").Select

  • VBAで「一度で全ての罫線をなくす」コードを書くときは

    With Selection .Borders(xlDiagonalDown).LineStyle = xlNone .Borders(xlDiagonalUp).LineStyle = xlNone .Borders(xlEdgeLeft).LineStyle = xlNone .Borders(xlEdgeTop).LineStyle = xlNone .Borders(xlEdgeBottom).LineStyle = xlNone .Borders(xlEdgeRight).LineStyle = xlNone .Borders(xlInsideVertical).LineStyle = xlNone .Borders(xlInsideHorizontal).LineStyle = xlNone End With これしかないですか? 「一度で全ての罫線をなくす」 みたいなのがあったら教えてください。よろしくお願いします。

  • VBAで「一度で全ての罫線をなくす」コードを書くときは

    With Selection .Borders(xlDiagonalDown).LineStyle = xlNone .Borders(xlDiagonalUp).LineStyle = xlNone .Borders(xlEdgeLeft).LineStyle = xlNone .Borders(xlEdgeTop).LineStyle = xlNone .Borders(xlEdgeBottom).LineStyle = xlNone .Borders(xlEdgeRight).LineStyle = xlNone .Borders(xlInsideVertical).LineStyle = xlNone .Borders(xlInsideHorizontal).LineStyle = xlNone End With これしかないですか? 「一度で全ての罫線をなくす」 みたいなのがあったら教えてください。よろしくお願いします。

  • XLAのシート表示

    アドインファイルとして**.xlaで登録したらシートが表示できなくなりシートの再編集ができなくなりました。作り直すしかないのでしょうか?(シートから情報を読み込んでいるのですがその設定値を換えたい)

  • XLAのシート表示

    アドインファイルとして**.xlaで登録したらシートが表示できなくなりシートの再編集ができなくなりました。作り直すしかないのでしょうか?(シートから情報を読み込んでいるのですがその設定値を換えたい)

  • セルの数字を範囲で選択して計算させたいです。

    エクセル2000を使用しています。 CSVファイルを読み込んで、シートに,区切りで開きました。 特定の列の数字を範囲で選択して(複数行)、範囲で選択したセルの数字を1/1000したいです。  特定のセルを範囲で指定するのは、毎回セルの開始行とセルの終了行が変わるためです。また 選択行の上下セルにも文字が入ってきます。 別シートに数式をいれないで、同じセルに計算結果を出すことは可能でしょうか?