こんにちは。
会社員である義母がExcelVBAを触ってみたいと言っていますが、初心者向け入門書籍で良いものはありますか? 義母は業務で使っているのでExcelはある程度使いこなせますが、プログラミングやコンピュータの基礎知識はありません。
私はコンピュータ関連の仕事をしているので、ある程度しっかり解説されたものがいいかなぁと思いますが、独学で学習された方などはいかがでしょうか?
実際に役に立った書籍などありましたら教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

こんにちは。

maruru01です。

私が使っている本を紹介します。

「かんたんプログラミング Excel2000 VBA」
    著者:大村あつし  技術評論社
    値段:基礎編 2280円+税
       コントロール・関数編 2380円+税
       応用編 2480円+税

プログラムについてよく知らない人にも、分かり易い内容だと思います。
ちなみに、同じシリーズで、AccessVBAやVisual Basicもあります。
では。
    • good
    • 0
この回答へのお礼

maruru01さん、早速のご回答ありがとうございます。お勧めの本を書店で見てみましたが、読みやすくわかりやすいですね。今度、義母と一緒に見に行くことにします。ありがとうございました。

お礼日時:2002/03/12 11:48

#1の方に賛成です。


3分冊になっていて少々高い印象がありますが
内容は豊富です。

また、困るのはやりたいことは分かるのに
実際どのように書いて実現すればいいかが
分からない時があります。
下は事例がいろいろ載っているので
ちょっと困った時の手助けになります。

Excel VBAマクロ500連発
―すぐに使える実用パーツ集
エクセルマクロ研究会 (編集)
単行本 (1999/08/01) 技術評論社
価格: ¥2,380
    • good
    • 0
この回答へのお礼

kenken0001さん、早速のご回答ありがとうございます。マクロの本は実際の業務にも役立ちそうですね。私が自分で使うのにも良いかなぁと思いました。ありがとうございました。尚、ポイントは回答順ということにさせていただきましたのでご了承ください。

お礼日時:2002/03/12 11:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Q日付入力 ExcelVBA

UserFormの日付入力部分で年、月、日と分けています。
それぞれSpinBoxで選択する前に今日の日付を表示させたいです。
どなたか教えてくださいm(_ _)m

Aベストアンサー

UserForm_Initialize等で

TextBox1.Value = Year(date)
TextBox2.Value = Month(date)
TextBox3.Value = Day(date)

として、スピンボタンの値も同じに設定してください。

QExcelVBAエラーについて

下記のマクロを起動したときにエラーインデックスが有効範囲にありませんというエラーメッセージがでます。 
Sheets("masta").Select
C_COUNT = Sheets("masta").Cells(2, 3).Text
For i = 1 To C_COUNT
M_KAKOBA(i) = i
Next i
For i = 1 To C_COUNT
Sheets("masta").Select
Cells(3, 5) = i
変更したのはSheets("masta")の1列目の9行から2列の11行目にデータをいれました。

Aベストアンサー

こんにちは。

> Sheets("masta").Select

既回答の配列のミス以外では、シート[masta]にアクセスできないと同様の
エラーになりそうですね。可能性のひとつですが。

Select 文があるところから推測するに、いろいろシート間を飛ぶマクロ
なのではないですか?

例えば、異なるブックをアクティブにした後、シート[masta]のあるブック
をアクティブに戻さないまま

> Sheets("masta").Select

を実行しているとか。

以下は余談です。

ワークシート上のセルの値を使う場合、特にユーザーからの入力値を使う
場合は、どのような値が入力されるか予測できません。

例えば、Sheets("masta").Cells(2, 3) に文字列が入力されていたら?

> C_COUNT = Sheets("masta").Cells(2, 3).Text
> For i = 1 To C_COUNT

上記2行のいずれかでエラーになりそうです。

数値であることを保証しなければならないのですから、きちんとエラー値
の例外処理をしてやるか、簡単にするなら次のようにしてみると良いと
思います( ・∀・)

> C_COUNT = Sheets("masta").Cells(2, 3).Text
   ↓
C_COUNT = Val(Sheets("masta").Cells(2, 3).Value)

こんにちは。

> Sheets("masta").Select

既回答の配列のミス以外では、シート[masta]にアクセスできないと同様の
エラーになりそうですね。可能性のひとつですが。

Select 文があるところから推測するに、いろいろシート間を飛ぶマクロ
なのではないですか?

例えば、異なるブックをアクティブにした後、シート[masta]のあるブック
をアクティブに戻さないまま

> Sheets("masta").Select

を実行しているとか。

以下は余談です。

ワークシート上のセルの値を使う場合、特にユーザーから...続きを読む

QExcelVBAで改行方法

お世話になります。

以下のように改行を行うマクロをマクロの記録で作成しました。

ActiveWindow.View = xlPageBreakPreview
ActiveWindow.SmallScroll Down:=9
Set ActiveSheet.HPageBreaks(1).Location = Range("A34")
ActiveWindow.View = xlNormalView

1行目は改ページプレビューに移動する
3行目は改行位置をA34に設定する
4行目は標準ページにもどす

この2行目は何をやっているのでしょうか?

また、一般的に改ページの操作方法(2ページ目はここから)
というような制御はどのように行うのが普通なのでしょうか?

よろしくお願いします。

Aベストアンサー

こんにちは。maruru01です。

SmallScrollメソッドは、シートを指定行数分スクロールさせるメソッドです。
Downなので当然"下に"ですね。
自動マクロ記録では、スクロールバーの上下の三角ボタンをクリックするとこのメソッドが記録されます。
ちなみに、スクロールバーの柱の薄い部分をクリックすると、大きくスクロールしますが、これはLargeScrollメソッドに対応します。
おそらく、マクロの記録中にスクロールバーを操作したのでしょう。自動マクロ記録は、ばか正直に動作をコード化しますから。
では。

QExcelVBA 結合セル

beforedoubleclickイベントで、ダブルクリックしたセルの値をMsgBoxで表示させるマクロを作りましたが、セルが結合してあると、エラーになってしまいます
エラーを出さないためにはどうすればいいでしょうか?

Aベストアンサー

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
MsgBox ActiveCell.Value
End Sub

で、どうでしょう?

QexcelVBA 配列ソート方法

こんにちは、
下記のコードを使ってsetint配列の値を
昇順にソートしようとしているのですが、
最小値が最後に来てしまいます。
何か昇順にソートする方法はないでしょうか。

'昇順並び変え
For run = 1 To UBound(setint)
For run1 = UBound(setint) To 1 Step -1
If setint(run) >= setint(run1) Then
swap = setint(run)
setint(run) = setint(run1)
setint(run1) = swap
End If
Next
Next
For run = 1 To UBound(setint)
Debug.Print setint(run)
Next

こんにちは、
下記のコードを使ってsetint配列の値を
昇順にソートしようとしているのですが、
最小値が最後に来てしまいます。
何か昇順にソートする方法はないでしょうか。

'昇順並び変え
For run = 1 To UBound(setint)
For run1 = UBound(setint) To 1 Step -1
If setint(run) >= setint(run1) Then
swap = setint(run)
setint(run) = setint(run1)
setint(run1) = swap
...続きを読む

Aベストアンサー

このコードですと、runとrun1が途中で入れ替わってしまいます(ステップインで確認すると分かると思います)。

For run = 1 To UBound(setint) - 1
For run1 = UBound(setint) To run + 1 Step -1

とすればよいかと思います。


このカテゴリの人気Q&Aランキング

おすすめ情報